2014-02-19 75 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