zoukankan      html  css  js  c++  java
  • MVC 捋一遍(2)

    EF 三种编程方式

    Database First,Model First和Code First,我们采用的是code first.

    users = db.SysUsers.Where(u => u.UserName == "Tom");和

    var sysUser = db.SysUsers.FirstOrDefault(u => u.UserName == "Tom");

    同为查找,可能返回的值不同吧(自我认为)FirstOrDefault返回的是元素的值,当没查到是返回默认值(null),没有默认值就返回0

    Repository Pattern是一种设计模式,这个概念大家肯定经常听到。

    "企业架构模式" 上的定义:

    Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.

    在域和数据映射层之间使用类似于接口的接口访问域对象。

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包。它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架。

    @Html.ActionLink("linkText", "actionName")

    这种重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法(Action),默认控制器为当前页面对应的控制器。

    @Html.ActionLink("linkText", "actionName", "controllerName")

    该重载比第一个重载多了一个参数,他指定了控制器的名称。

    例如,@Html.ActionLink("detail", "Detail", "Products")会生成<a href="Products/Detail">detail</a>

    @Html.ActionLink("linkText", "actionName", routeValues)

    相对于上一种重载,该重载新增了routeValue参数,routeValue可以向action传递参数。

    例如,@Html.ActionLink("detail", "Detail", new{ id = 1 })会生成<a href="Products/Detail/1">detail</a>

    @Html.ActionLink("linkText", "actionName", routeValues, htmlAttributes)

    htmlAttribute可以设置<a>标签的属性。

    例如,@Html.ActionLink("detail", "Detail", new{ id = 1 }, new{ target = "_blank" })会生成<a href="Products/Detail/1" target="_blank">detail</a>,

    需要注意的是如果写成new{ target="_blank", class="className" }则会报错,因为Class是C#的关键字,此时应该写成@class="className"。

    html.ActionLink生成一个<a href=".."></a>标记

    Url.Action只返回一个url。

    @Html.ActionLink("linkText","someaction","somecontroller",new { id = "123" },null)

    生成结果:

    <a href="/somecontroller/someaction/123">linkText</a>

    @Url.Action( "someaction", "somecontroller", new { id = "123" }, null)

    生成结果:
    /somecontroller/someaction/123

    使用布局页的View会自动应用最近文件夹下面的_ViewStart.cshtml.

    创建分部视图

    通过Html.Partial / Html.RenderPartial 使用分部视图(直接调用分部页)

    通过Html.Action / Html.RenderAction 使用分部视图(通过controller调用分部页)

    [ChildActionOnly] 表示这个Action只应作为子操作进行调用。

    也就是说直接通过 controller/action这样的网址是不能访问的,会提示只能由子请求访问的错误。

    必须返回一个PartialView

    我认为第二种更好一点,可以直接在controller(控制器)里面修改要更换的分部页

    XXX和RenderXXX的区别在于,一个是直接返回字符串,另外一个是直接写入到相应输出流,因此不能直接放在代码表达式中,必须放在代码块中。

    ?? 操作符叫做 null-coalescing operator.

    这个操作符给可为null的类型定义一个默认值。 (page ?? 1)表示如果page为null返回1,否则返回page的值。

    大家直接看下面例子:
    int y=x ?? 1; //如果x=null 则y=1,若x!=null ,y=x;

    htmlHelper Html.BeginForm()

    @using (Html.BeginForm("Index", "Search", @FormMethod.Get, new { id = "mainForm", name = "mainForm",@class="form-inline mainform"}))

    Index:操作方法的名称,Search:控制器的名称,@FormMethod.Get:定义from的method的值,

    new { id = "mainForm", name = "mainForm",@class="form-inline mainform"}:指定form的id,name,class属性,因class是Razor语法中的关键字所以要用@来标记。

    htmlHelper Html.TextBox()

    Html.TextBox("Remark", "", new { style = "200px;" })

    第一个参数为我们为他们取的名字对应id和name,第二个参数则为值,第三个参数则为属性

    这个产生的html元素就是<input id="Remark" name="Remark" style="200px;" type="text" value="" />

    htmlHelper Html.PagedListPager

    显示最下面的页数、、、(分页)详细如下网址

    https://www.cnblogs.com/liuyuanhao/p/4943940.html

    +++学习中遇到的一些函数和问题

    C#中Split用法~

    https://www.cnblogs.com/yugen/archive/2010/08/18/1802781.html

    用字符串分隔:

    using System.Text.RegularExpressions;

    string str="aaajsbbbjsccc";
    string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
    foreach (string i in sArray) Response.Write(i.ToString() + "<br>");
    输出结果:
    aaa
    bbb
    ccc

    用多个字符来分隔:
    string str="aaajbbbscccjdddseee";
    string[] sArray=str.Split(new char[2] {'j','s'});
    foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
    输出结果:
    aaa
    bbb
    ccc
    ddd
    eee

    用单个字符来分隔:
    string str="aaajbbbjccc";
    string[] sArray=str.Split('j');
    foreach(string i in sArray) Response.Write(i.ToString() + "<br>");
    输出结果:
    aaa
    bbb
    ccc

    DataRow
    //ds是从数据库拿出数据的缓存dataset
    DataTable dt = new DataTable();
    dt = ds.Tables[0];

    DataRow[] dr = new DataRow();//列
    dr = dt.Select("MenuFather=0");//这样写是错误的 会提示无法编译
    正常写法
    DataRow[] dr = dt.Select("MenuFather=0");//列 不能拆开写

  • 相关阅读:
    GC垃圾回收算法
    Docker+nginx部署Springboot+vue前后端分离项目
    报错 ImportError: cannot import name 'AsyncContextManager'
    Python+Selenium定位不到元素(报错:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element)
    淘宝网的发展史及其优缺点
    Python旅途——函数(1)
    正则表达式 -允许输入数字和小数点后两位
    表单的resetFileds函数重置为初始值而非清空数据
    做一个全局登录弹窗,任何地方访问
    浏览器到服务器的跨域问题
  • 原文地址:https://www.cnblogs.com/wwr01/p/7967274.html
Copyright © 2011-2022 走看看