Как отобразить подобную информацию в каждом представлении? - PullRequest
0 голосов
/ 29 сентября 2011

Я бы хотел отобразить информацию о состоянии регистрации пользователя. Оно должно отображаться при каждом просмотре, но я считаю, что написание этого кода около 20 раз - плохая идея. Кстати, это код, он работает, я гарантирую, что:

Посмотреть / RegistrationInfo:

<table width="95%" border="0" cols="2">
  <tr>
    <td width="50%" height="124"><h2><strong>Simple Blog </strong></h2></td>
    <td width="50%" height="124">

    @if (System.Web.HttpContext.Current.User.Identity.IsAuthenticated)
    {
        using (Html.BeginForm("LogOff", "Account"))
        {
        <table width="95%" height="86" border="0">
                    <tr>
                        <td width="50%" valign="middle">Hello, @System.Web.HttpContext.Current.User.Identity.Name</td>
                        <td width="50%" valign="middle" align = "right"><input type="submit" value="Exit" /></td>
                    </tr>
        </table>
        }
    }
    else
    {
            using (Html.BeginForm("LogIn", "Home"))
            {
                <table width="95%" height="86" border="0">
                    <tr>
                        <td width="45%" valign="bottom">Login:</td>
                        <td width="45%" valign="bottom">Password:</td>
                        <td width="10%"></td>
                    </tr>
                    <tr>
                        <td width="45%">
                            <p>
                                <input type="text" name="login" />
                            </p>
                        </td>
                        <td width="45%">
                            <p>
                                <input type="password" name="password" />
                            </p>
                        </td>
                        <td width="10%" align="left"> 
                            <input type="submit" value="Enter" />
                        </td>
                    </tr>
                    <tr>
                        <td width="45%" valign="top">
                            @Html.ActionLink("Register", "Register", "Account")
                        </td>
                    </tr>
                </table>
            }

        }

     </td>
  </tr>
</table>

<hr align="left" width="100%" size="2" />

Как вы можете видеть, это представление не требует строгой типизации ... и я не знаю, должен ли я модифицировать какие-либо контроллеры (потому что вся информация хранится в контексте HTML), и как. Я пытался позвонить

@Html.RenderAction("RegistrationInfo", "Home");

или @ Html.RenderPartial ("RegistrationInfo", "Home");

и каждый раз, когда я получаю ошибку компиляции с сообщением о недопустимых параметрах

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Хотя ответ Дарина полностью охватывает ваш вопрос, я хотел бы отметить, что информация о регистрации, похоже, больше относится к вашему макету (главная страница для .aspx-склонного), чем к действительному действию.

Итак, что ябудет делать (и действительно, do do) помещает его либо в часть заголовка вашего макета в правом верхнем углу или под боковым меню, либо что-то подобное, и позволяет макету обрабатывать все детали его рендеринга (с условием вокруг него, чтобы скрыть его, когда вы не вошли в систему, поэтому вы не видите его на экране входа).

0 голосов
/ 29 сентября 2011

Должно работать следующее:

@Html.Partial("~/Views/Home/RegistrationInfo.cshtml")

Или, если вы находитесь в представлении контроллера Home, просто:

@Html.Partial("RegistrationInfo")

Или если вы поставите этот частичный элемент в ~/Views/Shared/RegistrationInfo.cshtmlсможет ссылаться с использованием сокращенного синтаксиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...