0

我正在尝试在 C# MVC 4.5 中创建单页应用程序。

在我的应用程序中,我将有 1 个主视图,其中调用 3 个单独的视图。所有这三个视图彼此独立工作并自行刷新。

出于某种原因,我在渲染视图时没有调用这 3 个视图的控制器方法。任何想法为什么?

控制器:

public ActionResult Index()
{
    if (!_instance.Users.CheckUserSkillsExist(WebSecurity.CurrentUserName))
    {
        return RedirectToAction("CreateChar");
    }

    _instance.GameBase.GetBaseData();

    return View();
}

public ActionResult PlayerDisplayStats()
{
    var user = _instance.Users.GetUserSkills( WebSecurity.CurrentUserName);
    var userModel = new UserModel(user);
    return View(userModel);
}

查看:Index.cshtml

<div class="span2 offset1">
        <div class="span12">
            @RenderPage("~/Views/Game/PlayerDisplayStats.cshtml");
        </div>
        <div class="span2">
            @RenderPage("~/Views/Game/GameNavigator.cshtml");        
        </div>
    </div>
    <div class="span8">
        @RenderPage("~/Views/Game/MainWindow.cshtml");        
   </div>

查看:PlayerDisplayStats.cshtml

<div class="row-fluid tileOpaque">
    <div class="span12 content">
        <div class="img avatar">               
        </div>
        <div class="span12">
            <div class="span6 stat">
                @Html.LabelFor(m => m.StrVal)
                @Html.DisplayFor(m => m.StrVal)
            </div>
            <div class="span6 stat">
                Det:
            </div>
        </div>
    </div>
</div>
4

1 回答 1

2

我认为您的问题很可能是由于使用@RenderPage 而不是@Html.Action。使用@Html.Action 意味着您的视图将通过控制器,因此在这样做时会获得必要的模型。@RenderPage 只是在响应中包含视图。我鼓励您阅读此 SO 条目以了解差异:

Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction

你会(可能)最终得到的是这样的......

<div class="span2 offset1">
    <div class="span12">
        @Html.Action("PlayerDisplayStats")
    </div>
    <div class="span2">
        @Html.Action("GameNavigator")
    </div>
</div>
<div class="span8">
    @Html.Action("MainWindow")
</div>

您还需要更改控制器以返回 PartialView ...

public ActionResult PlayerDisplayStats()
{
    var user = _instance.Users.GetUserSkills( WebSecurity.CurrentUserName);
    var userModel = new UserModel(user);
    return PartialView(userModel);
}

稍后,您可以使用 jQuery 获取各个部分视图并将更新后的视图注入页面。

于 2013-09-14T00:15:24.197 回答