2014-02-19 42 views
0

我有一个MVC项目,我在这张表格里发布了一个CommentController里的方法(Create)。我使用的是httppost。代码如下所示: 包含表单的视图。MVC Post form data using Ajax and GET

@model myproject.Models.Comment 

@using (Ajax.BeginForm("Create", 
new AjaxOptions { UpdateTargetId = "CommentContainer" })) 
{ 
    @Html.ValidationSummary(true) 

    @Html.LabelFor(model => model.UserComment) 
     @Html.EditorFor(model => model.UserComment) 
     @Html.ValidationMessageFor(model => model.UserComment) 
    <br /> 

    <input type="submit" value="Create comment" /> 
} 

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js"></script> 
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.unobtrusive-ajax.min.js"></script> 

的CommentController包含创建方法

[HttpPost] 
public PartialViewResult Create(Comment comment) 
{ 
    return PartialView("_RandomComment", comment); 
} 

现在,这一切工作正常,但我要的是要做到这一切使用GET无法发布。我仍然想使用Ajax.BeginForm和2个JavaScript库。我不想写我自己的jQuery代码。如何将上面的表单数据发布到我的CommentController中的GET方法中。

+1

为什么要使用GET进行POST数据? – Maess

+0

以避免用户单击浏览器上的后退按钮时的回发警告。 – Ovis

回答

0

我不建议使用GET发送表单数据。但是,如果您确实想要这样做,只需在AjaxOptions.HttpMethod属性中指定"Get"即可。

@using (Ajax.BeginForm("Create", new AjaxOptions { HttpMethod = "Get", UpdateTargetId = "CommentContainer" })) 
{ 
    ... your form elements ... 
} 

而且从接受[HttpPost][HttpGet]改变你的操作方法。

+0

嗨HTX9!感谢您的建议,但是这不起作用。它像click事件一样不会被解雇。 – Ovis

+0

等一下!我尝试了一些,明确地包含了未包含在POST版本中的控制器名称(CommentController),并知道它的工作原理!谢谢!对于读者来说;在上面的代码中唯一改变的是:1)@using(Ajax.BeginForm(“Create”,“Comment”, new AjaxOptions {HttpMethod =“Get”,并且在CommentController里面我只是将[HttpGet]设置为创建方法。 – Ovis