【问题标题】:Asp.net MVC 3 Ajax.beginform submission-what is sentAsp.net MVC 3 Ajax.beginform 提交-发送什么
【发布时间】:2013-11-02 09:49:24
【问题描述】:

我有一个局部视图,其中包含使用 ajax.begin 表单创建的表单

 @using (Ajax.BeginForm("Save", "saveStuffHere", null, new AjaxOptions 
   {HttpMethod = "Post", InsertionMode = InsertionMode.InsertAfter,
   OnSuccess = "handleSuccess", OnFailure = "handleError"}))
 {

在我的控制器saveStuffHere我有一个方法Save

public class saveStuffHereController : Controller
 {
     ....other things...
    /// <summary>
    /// Save the information
    /// </summary>       
    /// <returns></returns>
    [HttpPost]
    public JsonResult Save(I do not know what is passed here)
    {
       .... db code goes here
    }

我正在使用表单的submit() 方法保存表单。如果我在控制器中调用错误的方法,请纠正我。但我的问题是究竟是什么被送回?或者换句话说,我的Save 方法应该期待什么? 基本上我不知道传递给我的 Save 方法的是什么。有没有办法让我指定我要传回的内容?我了解并知道如何使用 jquery ajax,但我想在继续使用 jquery ajax 之前尝试这种方式。

【问题讨论】:

    标签: asp.net ajax asp.net-mvc forms asp.net-mvc-3


    【解决方案1】:

    返回的究竟是什么

    无论您在表单中使用什么input 标记。所以,在最简单的情况下,如果你有这个:

    @using (Ajax.BeginForm("Save")) {
        <input type='hidden' value='test' name='AFormField' />
    }
    

    那么控制器动作应该期望一个字段被路由:

    [Post]
    public JsonResult Save(string AFormField)
    

    如果您使用 HTML 帮助器和强类型模型...

    @using (Ajax.BeginForm("Save")) {
        @Html.EditorFor(model => model)
    }
    

    那么您可以期望模型实例被路由到 Action:

    [Post]
    public JsonResult Save(MyModelType model)
    

    【讨论】:

    • 该死,那我就完蛋了。我的表单只包含从 jqx 小部件网格创建的复选框,这些复选框是 div,其样式看起来像复选框。唯一的两个输入是底部的电子邮件和电话号码。无论如何,谢谢,是时候告诉老板我没有按照他的方式做,而是使用jquery ajax。非常感谢。
    • @JackThor 你总是可以使用与复选框样式的 div 同步的隐藏输入。但实际上,我认为 JQuery Ajax 和 Ajax.BeginForm 之间没有太大的功能差异,只是语法不同。
    • @McGarngle 即使功能相同,但如果我使用表单的submit() 功能,我无法控制我发送的内容是否正确?或者我可以使用 onBegin 来修改正在发送的内容吗?因为并非所有内容都需要发送过来,并且 jquery ajax 将允许我进行选择。
    • @JackThor .submit() 是同步回发,而不是 Ajax ......所以我不确定你为什么要使用它。但是我认为您是对的,使用 Ajax.BeginForm 并不能真正让您控制(直接)发送的内容,而使用 JQuery $.post,您可以直接将要发送的数据作为选项哈希传递。
    • 太棒了,再次感谢您的帮助,并且喜欢辛普森的照片,我现在要回家赶上辛普森了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    相关资源
    最近更新 更多