asp.net mvc не рендерит действия - PullRequest
0 голосов
/ 05 марта 2012

У меня есть страница макета со следующим

_app.cshtml

<div id="top_right">
    @{ Html.Partial("_LogOnPartial"); }
</div>

В журнале частично содержится

_LogOnPartial.cshtml

@{
    Layout = null;
}

@if (Request.IsAuthenticated)
{
    Html.RenderAction("Details", "Account");
}
else
{
    Html.RenderAction("LogOn", "Account");
}

и метод рендеринга, который я ожидаю увидеть, -

AccountController.cs

public class Account
{  
        public PartialViewResult LogOn()
        {
            return PartialView();
        }
}

частичное представление входа в систему, которое будет возвращено Account / LogOn:

LogOn.cshtml

@model Presentation.Models.LogOnModel

<div id="login">
    @Html.ValidationSummary()

    <h2>Start by Loggin in</h2>

    @using (Html.BeginForm("LogOn", "Account"))
    {
        @Html.Hidden("returnUrl", Request.Url.PathAndQuery)

        <table width="100%" border="0" cellspacing="0" cellpadding="5">
            <tr>
                <td>
                    <span class="bluey">Username:</span><br />
                    @Html.TextBoxFor(m => m.UserName, new {tabindex = "1", Class = "field"})
                    @Html.ValidationMessageFor(m => m.UserName, "*")
                </td>
                <td>
                    <span class="bluey">Password:</span><br />
                    @Html.TextBoxFor(m => m.Password, new {tabindex = "2", Class = "field"})
                    @Html.ValidationMessageFor(m => m.Password, "*")
                </td>
            </tr>
            <tr>
                <td>
                    <input name="login" type="submit" value="Submit" class="input_btn" tabindex="3" />
                </td>
                <td>@Html.CheckBoxFor(m => m.RememberMe) @Html.LabelFor(m => m.RememberMe) <span class="bluey">&nbsp; | &nbsp;</span> @Html.ActionLink("Forgot Password?", "Password", "User")></td>
            </tr>
        </table>
    }
</div>

Я проследил поток и вижу, что он достигает

Html.RenderAction("LogOn", "Account")

и возвращает оттуда частичное представление, однако, когда я просматриваю страницу, ни один из html частичного представления ( LogOn.cshtml ) не отображается, его даже нет в источнике. *

Я что-то упустил здесь, есть ли лучший способ добиться этого?

1 Ответ

4 голосов
/ 05 марта 2012

У вас есть кодовый блок, который будет возвращать частичное, а не выводить его, измените:

<div id="top_right">
    @{ Html.Partial("_LogOnPartial"); }
</div>

на:

<div id="top_right">
    @Html.Partial("_LogOnPartial");
</div>

В качестве альтернативы используйте Html.выведите его напрямую.

...