我是 MVC 4 和 Razor 引擎的新手——所以这可能是一个愚蠢的问题。
我想要实现的是我有一个带有下拉列表和按钮的页面。单击按钮调用控制器传递选定的值。控制器应该返回一个局部视图,并且应该只更新页面的底部。
但是,我发现整个页面仅被部分视图 html 替换。IE。我得到了我的结果列表显示,但我失去了我的项目下拉列表和提交按钮。我尝试包含对 jquery 和不显眼的脚本的引用(我认为在 MVC 4 中不需要),但这根本不会改变页面(即下拉列表和按钮留在那里并且没有结果显示)。
我的部分观点:
@using (Ajax.BeginForm("GetProjectStories", "MyController", new AjaxOptions{ UpdateTargetId = "projectUserStories"}))
{
<fieldset>
<legend>Select Project</legend>
<div>
@Html.DropDownList("ProjectReference", (IEnumerable<SelectListItem>)Model.ProjectList)
</div>
<p>
<input name="GetStoriesButton" type="submit" value="Get Stories" />
</p>
</fieldset>
}
@if (Model != null && Model.UserStories != null)
{
<div id="projectUserStories">
@{Html.RenderPartial("_UserStoryList", Model);}
</div>
}
我的控制器:
public ActionResult GetProjectStories(ProjectViewModel model)
{
var stories = MyService.GetProjectUserStories(model.ProjectReference).Results;
model.UserStories = stories;
return PartialView("_UserStoryList", model);
}
我的部分视图内容只包含一个 html 表和对模型的引用。