2010-04-07 73 views
0

我有以下網址:傳遞URL參數和表單數據一起

http://localhost:49970/Messages/Index/9999

而在視圖「索引」我有一個表格,我發佈表單數據的動作指數(除芯與[HttpPost ])使用jQuery,像這樣:

檢視:

<script type="text/javascript"> 
    function getMessages() { 
     var URL = "Index"; 
     $.post(
      URL, 
      $("form").serialize(), 
      function(data) { 
       $('#tabela').html(data); 
      } 
     ); 
    } 
</script> 

<% using (Html.BeginForm()) {%> 

     <%=Html.TextArea("Message") %> 

     <input type="button" id="submit" value="Send" onclick="javascript:getMessages();" /> 

    <% } %> 

控制器:

[HttpPost] 
public ActionResult Index(FormCollection collection) 
{ 
    //do something... 
    return PartialView("SomePartialView", someModel); 
} 

我的問題:如何在操作索引中獲取參數「9999」和窗體FormCollection?

PS:對不起我的英語:)

回答

0

您需要在routes集合中聲明id。然後,在行動中加上一個可怕的名字。

public ActionResult Index(int id, string otherPostData...) 
{ 
    //do something... 
    return PartialView("SomePartialView", someModel); 
} 

看看這裏的MVC的URL路由如何工作的細節:

http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx

+0

感謝您的快速答覆門迪:) 其實,我的參數是一個GUID(像 「08254a2a-7089-46e6-B03D-406a72a34148」)。我嘗試像你說要聲明的方法: 公衆的ActionResult指數(GUID ID,字符串消息?) {// id爲null //消息是確定的(有我輸入值) 回報PartialView( 「SomePartialView」,someModel); } 如果我更改可空的Guid?只有Guid,當我按下按鈕什麼都沒有發生...... – Fabio 2010-04-07 02:59:10

0

一個簡單的方法是將Id添加到您的表單值。

這應該做的伎倆:

<% using (Html.BeginForm()) {%> 

    <%=Html.Hidden("Id") %> 

    <%=Html.TextArea("Message") %> 

    <input type="button" id="submit" value="Send" onclick="javascript:getMessages();" /> 

<% } %> 

如果不工作,你需要的Id拋入ViewData控制器。

另一種方式來做到這一點(這可能是清潔劑)是從表單的action屬性得到URL jQuery的職位,。當你在它的時候,我也會讓js不顯眼。

HTHS,
查爾斯