Ответ 1
наконец, это было решение
return View("ResetPassword", new ResetPassword
{
fields= fields
});
У меня есть метод SendMail в MVC Controller. Этот метод вызывает другой метод ValidateLogin. Это подпись Validate Login:
private ActionResult ValidateLogin(Models.ResetPassword model)
Когда я вызываю ValidateLogin из SendMail, это исключение появляется, потому что контроллер пытается выполнить поиск SendMail, но я хочу загрузить ResetPassword View:
Global Error - The view 'SendMail' or its master was not found or no view engine supports the searched locations. The following locations were searched: ...
Это код SendMail:
public ActionResult SendMail(string login)
{
return ValidateLogin(login);
}
Как я могу переопределить представление в операторе return?
Заранее спасибо
наконец, это было решение
return View("ResetPassword", new ResetPassword
{
fields= fields
});
private ActionResult SendMail(string login)
{
return View("~/Views/SpecificView.cshtml")
}
Вы можете прямо указывать на конкретное представление, явно указывая на свое местоположение.
Метод View
имеет перегрузку, которая получает строку в viewName
. Иногда вы хотите передать string
в качестве модели, а структура asp.net смущает ее, пытаясь найти представление со значением string
. Попробуйте что-то вроде этого:
public ActionResult SendMail(string login)
{
this.Model = login; // set the model
return View("ValidateLogin"); // reponse the ValidateLogin view
}
Вы можете вернуть представление по имени, подобному этому
return View("viewnamehere");
Спасибо за предоставление ответа на переполнение стека!
Пожалуйста, обязательно ответьте на вопрос. Предоставьте детали и поделитесь своими исследованиями! Но избегайте...
Обращение за помощью, разъяснения или ответы на другие ответы. Делать заявления, основанные на мнении; подкрепите их ссылками или личным опытом. Чтобы узнать больше, ознакомьтесь с нашими советами по написанию отличных ответов.
Если SendMail был POST, вы должны использовать шаблон POST-REDIRECT-GET
public ActionResult SendMail(string login)
{
...
return RedirectToAction("ResetPassword", login);
}
public ActionResult ResetPassword(string login)
{
...
return View("ResetPassword", login);
}
Это защитит вас от двойного поста в IE