我正在ASP.NET MVC3上构建一个文档管理系统的网站,在我正在使用部分视图的页面中,部分视图代表一个简单的Form.There有一个下拉列表,当选择一个选项时,ID选择的选项应该转到行动结果。为此,我使用 $。getJSON 方法将值传递给action方法。但问题是ID不会转到ActionResult。任何人都可以帮我解决这个问题吗?
cshtml代码
<div >
@using (Html.BeginForm("GetFilteredActivityLogs", "Document", FormMethod.Post, new
{
id = "activityLog",
@class = "form-horizontal",
}))
{
<h3>Activity Log</h3>
<div>
<div style="float: left" class="control-label">
<label>
Action Type
</label>
</div>
<div class="controls">
@Html.DropDownListFor(model => model.SelectedActionId, Model.ActionTypes as SelectList, "All", new {
id = "SelectedActionId"
})
</div>
<table class="table table-bordered" style="margin-top: 20px; width: 100%;">
<thead>
<tr>
<th style="width: 15%; text-align: center">
Employee No
</th>
<th style="width: 20%; text-align: center">
Employee Name
</th>
<th style="width: 45%; text-align: center">
Action
</th>
<th style="width: 20%; text-align: center">
Date and Time
</th>
</tr>
</thead>
<tbody id="Activities">
</tbody>
</table>
</div>
}
</div>
控制器:
public ActionResult GetFilteredActivityLogs(int actionTypeId)
{
return View();
}
脚本:
<script type="text/javascript">
$(function ()
{
$('#SelectedActionId').change(function ()
{
var selectedActivityId = $(this).val();
$.getJSON('@Url.Action("GetFilteredActivityLogs", "Document")', { activityId: selectedActivityId }, function (FilteredActivities)
{
var ActivitySelect = $('#Activities');
// GroupSelect.empty();
$.each(FilteredActivities, function (index, activity)
{
// some code goes here...
});
});
});
});
</script>
答案 0 :(得分:1)
正如BuildStarted所说,我认为您需要使用getJSON请求(“activityId”)发送的数据密钥与您的操作上的参数匹配。当有一个参数时,我经常只使用“id”来获得默认路由的匹配,因此是一个不错的URL(即/ Document / GetFilteredActivityLogs / 123)。
另一个观察点:我认为值得一看jQuery表单插件(http://malsup.com/jquery/form/)。现在你要定义你的参数两次,一次在BeginForm中,再次在你的javascript中。如果您使用插件在表单上启用ajax,则只能在BeginForm中定义params,然后在“change”事件处理程序中提交表单。