MVC功能

(以下文章引用诸多网络博客内容,如有侵权请联系我们删除)

 

访问localhost/home/index 将访问 class HomeController类中的 Index() 函数,并且返回网页输出

 

ViewPage中存在一个HtmlHelpe类的一个对象Html ,所以在页面中可以用 @Html.xxx 生成一些网页控件

页面内容                                                                                                       网页内容

@Html.ActionLink("连接","Index","Home")                                                    <a href="/Index/home">连接</a>

@Html.RouteLink("连接","Index","Home",new {page=1},null)                       <a href="/Index/home/?page=1">连接</a>

@Html.RouteLink("连接","Index",new {page=1})                                           <a href="/Index/?page=1">连接</a>

@Html.ActionLink("连接","Index","Home",new {page=1},new{id="link1" })                       <a href="/Index/home/?page=1" id="link1">连接</a>

 

 

Html.TextBox("input1") 
Html.TextBox("input2",Model.CategoryName,new{ @style = "width:300px;" }) 
Html.TextBox("input3", ViewData["Name"],new{ @style = "width:300px;" }) 
Html.TextBoxFor(a => a.CategoryName, new { @style = "width:300px;" })

其生成的结果为:
<input id="input1" name="input1" type="text" value="" />
<input id="input2" name="input2" style="width:300px;" type="text" value="Beverages" />
<input id="input3" name="input3" style="width:300px;" type="text" value="" />
<input id="CategoryName" name="CategoryName" style="width:300px;" type="text" value="Electronic" />

 

Html.TextArea("input5", Model.CategoryName, 3, 9,null)
Html.TextAreaFor(a => a.CategoryName, 3, 3, null)
其生成的结果为:
<textarea cols="9" id="input5" name="input5" rows="3">Electronic</textarea>
<textarea cols="3" id="CategoryName" name="CategoryName" rows="3">Electronic</textarea>
Html.CheckBox("chk1",true) 
Html.CheckBox("chk1", new { @class="checkBox"}) 
Html.CheckBoxFor(a =>a.IsVaild, new { @class = "checkBox" })

其生成的结果为:
<input checked="checked" id="chk1" name="chk1" type="checkbox" value="true" /><input name="chk1" type="hidden" value="false" />
<input class="checkBox" id="chk1" name="chk1" type="checkbox" value="true" /><input name="chk1" type="hidden" value="false" />
<input checked="checked" class="checkBox" id="IsVaild" name="IsVaild" type="checkbox" value="true" /><input name="IsVaild" type="hidden" value="false" />
Html.DropDownList("ddl1", (SelectList)ViewData["Categories"],  "--Select One--")
Html.DropDownListFor(a => a.CategoryName, (SelectList)ViewData["Categories"], "--Select One--", new { @class = "dropdownlist" })
其生成的结果为:
复制代码
<select id="ddl1" name="ddl1">
<option value="">--Select One--</option>
<option value="1">Beverages</option>
<option value="2">Condiments</option>
<option selected="selected" value="3">Confections</option>
<option value="4">Dairy Products</option>
<option value="5">Grains/Cereals</option>
<option value="6">Meat/Poultry</option>
<option value="7">Produce</option>
<option value="8">Seafood</option>
</select>
<select class="dropdownlist" id="CategoryName" name="CategoryName">
<option value="">--Select One--</option>
<option value="1">Beverages</option>
<option value="2">Condiments</option>
<option value="3">Confections</option>
<option value="4">Dairy Products</option>
<option value="5">Grains/Cereals</option>
<option value="6">Meat/Poultry</option>
<option value="7">Produce</option>
<option value="8">Seafood</option>
</select>
复制代码
<%: Html.RadioButton("Gender","1",true) %><%: Html.RadioButton("Gender","2",false) %>
其生成的代码为:
<input checked="checked" id="Gender" name="Gender" type="radio" value="1" /><input id="Gender" name="Gender" type="radio" value="2" />

<%: Html.Encode("<p>哈哈</p>") %>

  其生成的代码为:

&amp;lt;p&amp;gt;哈哈&amp;lt;/p&amp;gt;
<%: Html.Raw("<p>哈哈</p>") %>

  其生成的代码为:

<p>哈哈</p>
在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor
@{
        string test = "Edison Chou";
        <p>@test.IsInt()</p>
        <p>@test.AsInt()</p>
}


ActionResult是一个操作方法的结果,并且是一个抽象类,那么,也就代表了可以有多重结果的实现。这样就解释了,我们在Action中可以不仅可以返回ViewResult还可以返回JsonResult的原因。通过下表,我们可以清晰地看到,ActionResult的各种派生类的详情:


从表中可以看出,我们所常用的各种XXXXResult都不约而同地继承了ActionResult这个基类,或者是其父类(例如:ViewResultBase)继承了ActionResult这个基类。因此,我们既可以在Action中返回视图,还可以返回文件流、重定向、空内容等结果。特别是,以前我们在WebForm时代常常与浏览器交互采用JSON格式的数据,需要使用JavaScriptSerializer这个类进行Serialize后返回。但是,在MVC的Action中,微软已经帮我们封装了好了JsonResult


EmptyResult

Content:通过Content可以向浏览器返回一段字符串类型的文本结果,就相当于Response.Write("xxxx");一样的效果;
return Content(contentString);  ContentResult

File:通过File可以向浏览器返回一段文件流,主要用于输出一些图片或文件提供下载等;

HttpUnauthorizedResult:通过HttpUnauthorizedResult可以向浏览器输出指定的状态码和状态提示,如果不指定状态码,则默认为401无权访问;
RedirectRedirectToAction:重定向与重定向到指定Action,我一般使用后者,主要是向浏览器发送HTTP 302的重定向响应;

Json:通过Json可以轻松地将我们所需要返回的数据封装成为Json格式,进行Ajax开发可以变得so easy!
public ActionResult JsonResultDemo()
{
      var tempObj = new { Controller = "HomeController", Action = "JsonResultDemo" };
      return Json(tempObj, JsonRequestBehavior.AllowGet);
}

JavaScript:可以通过JavaScriptResult向浏览器单独输出一段JS代码,不过由于主流浏览器都对此进行了安全检查,因此你的JS代码也许无法正常执行,反而是会以字符串的形式显示在页面中;

MapRoute方法介绍

       MapRoute( string name, string url);

  MapRoute( string name, string url, object defaults);
  MapRoute( string name, string url, string[] namespaces);
  MapRoute( string name, string url, object defaults, object constraints);
       MapRoute( string name, string url, object defaults, string[] namespaces);
  MapRoute( string name, string url, object defaults, object constraints, string[] namespaces);




posted on 2017-07-05 18:51  土金豪  阅读(129)  评论(0编辑  收藏  举报