У меня есть сайт mvc, хорошо работающий с мобильными и немобильными браузерами; проблема, с которой я столкнулась, - это. У меня есть пара действий, которые (по причинам ведения журнала) я не хочу делать return RedirectToAction(...);
, так что вместо этого я использовал return View("OtherView", model);
, это сработало, пока я не попробовал его на мобильном устройстве, и он не находит OtherView.Mobile.cshtml. Есть ли способ сделать эту работу?Определить, какой ASP.NET MVC View вернуть, когда не используется return View (model), но return View («viewName», model)
Thise являются мнением
Views/Account/Create.cshtml
Views/Account/Create.Mobile.cshtml
Views/Account/CreateSuccess.cshtml
Views/Account/CreateSuccess.Mobile.cshtml
Это действие
public ActionResult Create(FormCollection form)
{
TryUpdateModel(model);
if(!ModelState.IsValid) { return View(); } // this works correctly
var model = new Account();
var results = database.CreateAccount(model);
if(results) return View("CreateSuccess", model); // trying to make this dynamic
return View(model); // this works correctly
}
Обычно я бы просто сделать return RedirectToAction(...);
на страницу счета подробно, но это создаст дополнительную запись в журнале (для этого пользователя чтение), а также страница сведений не имеет доступа к паролю. Так как у ActionResult Create
был пароль, он может показать его пользователю для подтверждения, прежде чем его больше не увидеть.
Чтобы было ясно, я не хочу делать if (Request.Browser.IsMobileDevice) mobile else full
, потому что в конечном итоге можно добавить еще один набор мобильных представлений для для IPad или любой другой:
Views/Account/Create.cshtml
Views/Account/Create.Mobile.cshtml
Views/Account/Create.iPad.cshtml
Views/Account/CreateSuccess.cshtml
Views/Account/CreateSuccess.Mobile.cshtml
Views/Account/CreateSuccess.iPad.cshtml