Buduję mobilne widoki strony asp.net MVC4 i napotkałem problem. Mamy sporo miejsc, w których mamy metodę przekonwertowania widoku na ciąg, ale ta metoda nie działa z displaymodes, dlatego zawsze znajduje domyślny widok. Na przykład. index.cshtml zamiast index.mobile.cshtml.MVC4 RenderViewToString nie respektuje mobilnych wyświetleń
Jakieś pomysły na to, czego brakuje, aby ten kod był zgodny z mobilnymi trybami wyświetlania?
public string RenderViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
if (viewResult.View == null)
{
var message = String.Format("View '{0}' not found. Searched in the following locations {1}.",
viewName, String.Join(", ", viewResult.SearchedLocations));
throw new Exception(message);
}
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return stripWhitespaceRx.Replace(sw.GetStringBuilder().ToString(), " ").Trim();
}
}
Musisz przekazać wyraźny argument do wyświetlania widoków mobilnych, nie wie, że jest mobilny, czy nie. – marko
Wyobraziłem sobie tyle, ale nie wiem, gdzie przekazać tę argumentację. Jak dotąd najlepszym rozwiązaniem jest, aby w widoku nazwa upewnić się, że najpierw spróbuję znaleźć wersję mobilną, a następnie wrócić do wartości domyślnej, jeśli nic nie zostanie znalezione. Ale nie czuję się dobrze. –
Musisz stworzyć coś przed wywołaniem metody powyżej, nazwa widoku powinna być mobilna lub w obiekcie (jeśli jest to viewmodel lub coś stworzyć własność może nazywać się IsMobile i zależnie od tego, czy to urządzenie mobilne zachowuje się odpowiednio). – marko