我想显示有关用户注册状态的信息。它应该显示在每个视图上,但我认为,将此代码写入大约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”);
每次我收到有关无效参数的消息的编译错误
答案 0 :(得分:2)
虽然Darin的答案完全涵盖了您的问题,但我会指出注册信息似乎更像是布局的一部分(.aspx倾向的母版页)而非实际操作。
所以我会做的(事实上,做做)将它放在右上角或侧边菜单下的布局的标题部分,然后让布局处理渲染它的所有细节(当你没有登录时,用它来条件隐藏它,所以你不会在登录屏幕上看到它。)
答案 1 :(得分:0)
以下内容应该有效:
@Html.Partial("~/Views/Home/RegistrationInfo.cshtml")
或者,如果您只是在Home控制器的视图中:
@Html.Partial("RegistrationInfo")
或者,如果您将此部分放在~/Views/Shared/RegistrationInfo.cshtml
中,您将能够使用简写语法进行引用。