1、在TeacherController控制器中创建一个action方法
public string SaveTeacher(Teacher t)
{
return t.TeacherName + "|" + t.TeacherId + "|" + t.TeacherAge;
}
2、运行测试
3、添加重置和取消按钮
a、在CreateTeacher.cshtml中按钮部分增加重置和取消按钮,并在顶部添加脚本标签,并编写JavaScript函数ResetForm():
@{
Layout = null;
}
<script>
function ResetForm()
{
document.getElementById('TxtName').value = "";
document.getElementById('TxtId').value = "";
document.getElementById('TxtAge').value = "";
}
</script>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>
CreateTeacher
</title>
</head>
<body>
<div>
<form action ="/Teacher/SaveTeacher" method="post">
Teacher Name:<input type="text" id="TxtName" name ="TeacherName" value=""/><br />
Teacher Id:<input type ="text" name="TeacherId" id="TxtId" value=""/><br />
Teacher Age:<input type="text" name ="TeacherAge" id="TxtAge" value=""/><br />
<input type="submit" name="BtnSubmit" value="Save"/>
<input type="button" name ="BtnReset" value="Reset" οnclick="ResetForm()" />
<input type="submit" name="BtnSubmit" value="Cancel "/>
</form>
</div>
</body>
</html>
4、测试结果
A | explian:
1、action方法内部的TextBox值如何更新Teacher对象?
在ASP.NET MVC中有个Model Binder的概念:
无论请求是否由带参的action方法生成,Model Binder 都会自动执行。
Model Binder会通过放发的元参数迭代,然后会和接收到的参数名称对比,如果匹配则响应接收的数据,并分配给参数,在其迭代完成后,将类参数的每个属性名称与接收的数据做对比,如果匹配,则响应接收的数据。例中action的TeacherName会被Teacher类中的属性TeacherName更新。
2、Model Binder是组合的关系,会根据空间名称执行。
3、在上述实例中,保存和取消按钮为同名是因为在日常使用中,点击提交按钮之后,请求会被发送到服务端,所有的输入控件的值都会被发送,提交按钮也是输入按钮的一种,所以也会被发送。即点击保存按钮,保存按钮的值Sava也会被发送到服务端,在Action方法中,Model Binder维护这些工作,会根据接收到的值更新参数值。
4、提交按钮可以有3中实现的方法:
a、和上述例子中reset按钮类似,用javascript动态丢该url
<form action="" method="post" id="TeacherForm" >
...
...
<input type="submit" name="BtnSubmit" value="Save" οnclick="document.getElementById('TeacherForm').action = '/Teacher/SaveTeacher'" />
...
<input type="submit" name="BtnSubmit" value="Cancel" οnclick="document.getElementById('TeacherForm').action = '/Teacher/CancelSave'" />
</form>
b、隐藏一个Form元素
<form action="/Teacher/CancelSave" id="CancelForm" method="get" style="display:none">
</form>
将提交按钮改为正常按钮,并且使用JavaScript脚本代码:
<input type="button" name="BtnSubmit" value="Cancel" οnclick="document.getElementById('CancelForm').submit()" />
c、AJax
使用常规输入按钮代替提交按钮,点击时候使用JQuery或其他库来来产生纯AJax请求。
为什么在实现重置功能时候,不用input type=reset?
输入类型type=reset不是清晰的值,设置了控件的默认值,加入使用type=reset实现重置功能,点击重置按钮,textbox内的值就是你定义的input type=“reset” name="Reset" value="null" value里面的Null值。
如果空间名字和类属性名字不匹配会增加你更复杂的代码,更多资料请浏览网页
RedirectToAction 函数的功能?
RedirectToAction 会生成 RedirectToRouteResult 如ViewResult 和 ContentResult,RedirectToRouteResult是 ActionResult的孩子节点,表示间接响应,当浏览器接收到RedirectToRouteResult,新Action 方法产生新的请求。
EmptyResult是ActionResult的一个孩子节点,当浏览器接收到 EmptyResult,作为响应,它会显示空白屏幕,表示无结果。在本实验中不会发生EmptyResult。
转载请标明出处http://blog.csdn.net/jasonhds/版权所有,翻版必究~谢谢合作!