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>") %>
其生成的代码为:
&lt;p&gt;哈哈&lt;/p&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无权访问;
Redirect与RedirectToAction:重定向与重定向到指定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);