MVC4(razor)-控制器返回部分视图,但整个页面正在更新

MVC4(razor)-控制器返回部分视图,但整个页面正在更新,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,我是MVC4和Razor引擎的新手,所以这可能是个愚蠢的问题 我试图实现的是我有一个带有下拉列表和按钮的页面。单击该按钮调用传递所选值的控制器。控制器应该返回部分视图,并且只更新页面的底部 但是,我发现整个页面被替换为仅部分查看html。我得到了显示的结果列表,但我丢失了项目下拉列表和提交按钮。我试着引用jquery和不引人注目的脚本(我认为在MVC4中我不需要这样做),但这根本不会改变页面(例如,下拉列表和按钮保持在那里,不会显示结果) 我的部分看法是: @using (Ajax.BeginF

我是MVC4和Razor引擎的新手,所以这可能是个愚蠢的问题

我试图实现的是我有一个带有下拉列表和按钮的页面。单击该按钮调用传递所选值的控制器。控制器应该返回部分视图,并且只更新页面的底部

但是,我发现整个页面被替换为仅部分查看html。我得到了显示的结果列表,但我丢失了项目下拉列表和提交按钮。我试着引用jquery和不引人注目的脚本(我认为在MVC4中我不需要这样做),但这根本不会改变页面(例如,下拉列表和按钮保持在那里,不会显示结果)

我的部分看法是:

@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>

}

“我的部分视图”内容仅包含一个html表和对模型的引用。

您计划如何更新
projectUserStories
,如果无法呈现代码块,请尝试以下操作:

<div id="projectUserStories">
@if (Model != null && Model.UserStories != null)
{
   Html.RenderPartial("_UserStoryList", Model);
}
</div>

@if(Model!=null&&Model.UserStories!=null)
{
RenderPartial(“\u UserStoryList”,Model);
}
还要检查Microsoft Ajax帮助程序所需的所有js文件,例如:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

另请看:


  • 因此,我尝试包含那个不引人注目的脚本,并修复了这样一个事实:如果该对象为null,我没有呈现该div,但它仍然不工作

    所以我转而使用jquery

        <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    
        <script type="text/javascript">
                $(function () {
                    $('form').submit(function () {
                        var url = "@Url.Action("GetProjectStories", "MyController")";
                        var data = { selectedProject: $('#ProjectReference').val() };
    
                        $("#projectUserStories").load(url, data, function() {
                        });
                        return false;
                    });
                });
    
         </script>
    
            @using (Html.BeginForm())
            {
                <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>
    
                <div id="projectUserStories">
                    @{ Html.RenderPartial("_UserStoryList", Model); }
                </div>
             }
    
    
    $(函数(){
    $('form')。提交(函数(){
    var url=“@url.Action”(“GetProjectStories”、“MyController”);
    var data={selectedProject:$('#ProjectReference').val();
    $(“#projectUserStories”).load(url、数据、函数(){
    });
    返回false;
    });
    });
    @使用(Html.BeginForm())
    {
    选择项目
    @DropDownList(“ProjectReference”,(IEnumerable)Model.ProjectList)
    
    

    @{Html.RenderPartial(“_UserStoryList”,Model);} }
    是的,我今天早上注意到了-谢谢。将查看您的链接:)
        <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
    
        <script type="text/javascript">
                $(function () {
                    $('form').submit(function () {
                        var url = "@Url.Action("GetProjectStories", "MyController")";
                        var data = { selectedProject: $('#ProjectReference').val() };
    
                        $("#projectUserStories").load(url, data, function() {
                        });
                        return false;
                    });
                });
    
         </script>
    
            @using (Html.BeginForm())
            {
                <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>
    
                <div id="projectUserStories">
                    @{ Html.RenderPartial("_UserStoryList", Model); }
                </div>
             }