Asp.net mvc 提交列表(二)

 在Controller或服务器端获取Post数据
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/版权所有,翻版必究~谢谢合作!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值