Form是个很强大的标签,以前在aspx的时候不怎么注意,现在学MVC发现control和MVC交互数据很方便,action特性用以告知web浏览器信息发往哪里
例子1
<form action=”/Home/Search“ method="get" >
<input name="q" type="text"/>
<input type="submit" value="search"/>
</form>
而mothod 特性告诉浏览器是使用Http Post 还是使用Http Get。
在home控制器中
public ActionResult Search(string q)
{
return Content("<script >alert("+q+"');window.location.href=('Index')</script >", "text/html");
}
// 这个函数会自动响应视图中的submit,返回你在name为q的input元素中输入的字符串 这里input的name 属性一定要和Search(string q) 对应
在html 辅助方法中的写法是
@{Html.BeginForm("Search","Home",FormMethod.Get)}
<input type="text" name="q"/>
<input type="submit" value="Search"/>
@{Html.EndForm();}
BeingForm 辅助方法询问路由引擎如何找到HomeController控制方法Search的操作
或者是
@using (Html.BeginForm("Search","Home",FormMethod.Get))
{
<input type="text" name="q"/>
<input type="submit" value="Search"/>
}
如果你的form里面不想放submit标签,而是用一张图片,那也可以用脚本指向form.submit();
例子二
控制器:
public ActionResult Login(string userName, string password)
{
return Content("<script >alert("+userName+"');window.location.href=('Index')</script >", "text/html");
}
视图
<input id="userName" name="userName" type="text" />
<input id="password" name="password" type="password" />
<img id="Loginimg" src="Images/g2b4.jpg" width="85" height="40" alt="" />
脚本:
$("#Loginimg").click(function () {
Login();
});
function Login() {
//获取 Form
var form = $("form");
var userName = $("#userName").val();
var password = $("#password").val();
if (userName == null || userName == "" || password == null || password == "") {
alert("用户名或密码不能为空");
}
else {
form.submit();
}
}
当然MVC3自带的强类型视图生成的Form是最方便的,直接传递一个对象回去了,而且还带验证。当然样式可能不是大家想要的。你可以去掉哪些不想或者不必显示的项目
视图:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>TodayPlan</legend>
@Html.HiddenFor(model => model.NoteId)
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
再在控制器中自己的添加
再补充个题外话
要在一个视图中,嵌入另外一个强类型视图的分布视图,需要用
@Html.Partial("viewname",Model)
M要大写,Model就是那个分布是视图中需要用的Model,不然单纯的@Html.Partial("viewname") 会报错,它只适合返回普通的视图,html.renderPartial 也一样
@Html.Action(“name”) 可以显示,但是执行的时候会有很奇怪的错误,昨天用这个方法,返回的create的视图新增时,一直自动的往数据里里面写数据,写了两千多行,吓到了。 一打开那个页面就开始写,删了表中的数据它还是会写。除非关闭网页。 有人知道的为什么的麻烦指教下。