簡體   English   中英

C#MVC,未在視圖渲染上調用控制器操作

[英]C# MVC, controller action not being called on view render

我試圖在C#MVC 4.5中創建單頁面應用程序。

在我的應用程序中,我將有一個主視圖,它在其中調用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>

我認為你的問題很可能是由於使用了@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,您可以獲取單獨的部分視圖並將更新的視圖注入頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM