下面的代码填充下拉列表并自动提交表单,但它不会将id传递回控制器。
<script type="text/javascript">
$(function () {
$("#ArticleID").change(function () {
$('#TheForm').submit();
});
});
</script>
@using (Html.BeginForm("Details", "Article", FormMethod.Post, new { id = "TheForm" })){
@Html.DropDownList("ArticleID", (SelectList)ViewBag.ArticleId, "Select Article")
}我得到:
/Article/Details但需要:
/Article/Details/1我遵循的是一个教程,在这一点上停止。我不太清楚关于TheForm是怎么回事,我试着把ArticleID放进去,但那没有用。我该怎么做?
我也尝试过没有像这样的jQuery,
@using (Html.BeginForm("Details", "Article", FormMethod.Post, new { id = "TheForm" })){
@Html.DropDownList(
"ArticleID",
(SelectList)ViewData["Articles"],
"Please Select an Article",
new
{
onchange = "document.getElementById('TheForm').submit();"
})
}但它也不发送参数。
发布于 2011-11-30 00:52:19
在页面呈现如下行之前,将确定url:
@using (Html.BeginForm("Details", "Article", FormMethod.Post, new { id = "TheForm" }))这使:
<form action="/Article/Details" id="TheForm" method="post">由于要添加到Url的值ArticleID是由下拉选择确定的,因此需要使用JavaScript操作表单的action属性。
像这样的东西可能会起作用:
<script type="text/javascript">
$(function () {
$("#ArticleID").change(function () {
// The following line was changed to use @naspinski's suggestion
var actionUrl = '@Url.Action("Details", "Article")/' + $('#ArticleID').val();
$('#TheForm').attr('action', actionUrl);
$('#TheForm').submit();
});
});
</script>这么说,我觉得很尴尬。这可能值得考虑如何使用或如何使用该价值。它真的需要成为路线的一部分吗?如果没有,则可以完全避免操作action属性。
发布于 2011-12-18 13:22:28
有一个内置的方式可以在不选择操作的情况下呈现此操作:
var actionUrl = '@Url.Action("Details", "Article")/' + $('#ArticleID').val();https://stackoverflow.com/questions/8319767
复制相似问题