我有以下网址:
http://localhost:49970/Messages/Index/9999
在查看“索引”时,我有一个表单,我使用Jquery将表单数据发布到操作索引(用[HttpPost]解析),如下所示:
查看:
<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 :(得分:0)
您需要在routes集合中声明id。然后,只需在行动中放置一个同名的verible。
public ActionResult Index(int id, string otherPostData...)
{
//do something...
return PartialView("SomePartialView", someModel);
}
在此处查看有关MVC网址路由如何工作的详细信息:
http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx
答案 1 :(得分:0)
一种简单的方法是将Id
添加到表单值中。
这应该可以解决问题:
<% using (Html.BeginForm()) {%>
<%=Html.Hidden("Id") %>
<%=Html.TextArea("Message") %>
<input type="button" id="submit" value="Send" onclick="javascript:getMessages();" />
<% } %>
如果这不起作用,您需要将Id
扔进控制器中的ViewData
。
另一种方法(可能更干净)是从表单的action属性获取jQuery发布的URL
。当你在它的时候,我也会让js不引人注目。
HTHS,
查尔斯