На моем сайте я хочу отображать поле входа на всех страницах. Поэтому я хотел создать страницу частичного просмотра, которую я использую в своем файле _Layout.cshtml в Shared.
Но куда пойдет контроллер для этого частичного представления? И как моя кнопка входа будет иметь к ней доступ?
Таким образом, когда Request.IsAuthenticated имеет значение true, в поле входа отображается «Вошел в систему как ...», но когда результат неверен, я получаю небольшую таблицу с обычной формой имени пользователя/пароля.
Редактировать: после того, как я попробовал несколько ответов ниже, я, кажется, застрял в бесконечном лоппе в методе GET ниже. Это потому, что мой частичный вид пытается загрузить мне файл _Layout.cshtml, так как он хочет связать «мастер-страницу» с частичным видом? И поскольку мое частичное представление отображается в _Layout.cshtml, оно обрывается?
public class LoginController : Controller
{
//
// GET: /Login/
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(LoginModel loginModel)
{
if(ModelState.IsValid)
{
var g = new GallaryImage();
var user = g.LoginUser(loginModel.Username, loginModel.Password);
if(user != null)
{
FormsAuthentication.SetAuthCookie(user.username, false);
return RedirectToAction("index", "Home");
}
ModelState.AddModelError("", "Invalid Username/Password");
}
return View();
}
В моем _Layout.cshtml я пытаюсь загрузить частичное представление следующим образом:
<div style="text-align: right">
@Html.Action("Index", "Login")
</div>
Видите проблему?