Mam model widok tak:Czy możesz usunąć prefiks pola HTML z mocno wpisanych modeli w MVC 3?
public class EditVM
{
public Media.Domain.Entities.Movie Movie { get; set; }
public IEnumerable<Genre> Genres { get; set; }
}
Film jest prawdziwym podmiotem życzę edytować. Gatunki są po prostu obecne, aby zapełnić pole rozwijane. Wolałbym, że kiedy zadzwonić:
@Html.TextBoxFor(m => m.Movie.Title)
wewnątrz mojego silnie typami zdania, że kontrola wprowadzania mieć nazwę = "Title"
zamiast "Movie.Title"
Nie chciałbym podzielić mój pogląd na częściowym widokiem lub stracić mój mocno napisany widok za pomocą ViewData
lub tym podobnych.
Czy istnieje sposób wyrażenia w widoku, że nie chcę mieć prefiksu Movie.
? Zauważyłem, że można ustawić:
ViewData.TemplateInfo.HtmlFieldPrefix = "x";
w sterowniku, ale niestety wydaje się tylko, aby umożliwić dodanie dodatkowe prefiks. Ustawienie go na ""
nic nie robi.
Czy są jakieś prace? Czy utknąłem z niefortunnym przedrostkiem, który nie jest konieczny w tym przypadku, jeśli chcę zachować mocno wpisane widoki i lambdy?
Dzięki za pomoc.
Aktualizacja:
Oto działania kontrolera do może dokonać rzeczy nieco jaśniejsze.
public ActionResult Edit(int? id)
{
var vm = new EditVM
{
Movie = id.HasValue ? _movieSvc.Find(id.Value) : new Movie(),
Genres = AppData.ListGenres()
};
return View(vm);
}
[HttpPost]
public void Edit([Bind(Prefix = "Movie")]Movie m)
{
_movieSvc.AddOrUpdateMovie(m); //Exceptions handled elsewhere
}
Nie sądzę, żebym musiał napisać segregator. Wersja 'GET' mojej akcji edycyjnej używa EditVM, ponieważ wymaga wszystkich danych. Ale wersja 'POST' oczekuje tylko na otrzymanie obiektu Movie. Jeśli atrybuty nazwy byłyby po prostu "tytułem" itp., Wiązałoby się to dobrze. –
Używasz więc innego posta w swoim poście niż w przypadku zdobycia i wyświetlenia. To może być mylące i dlatego masz problemy. To nie jest "szczęśliwa ścieżka".Będziesz musiał pójść na kompromis. Zobacz moją aktualizację. –
Tak, to jest kompromis, którego zamierzam uniknąć. BTW Myślę, że masz na myśli powiedzieć, że jest to właściwość nazwy, a nie id, z którego korzysta segregator modelu. Mam wrażenie, że myślisz, że robię coś z rezerwacji tutaj, jeśli chodzi o sposób, w jaki zamierzam stworzyć akcję edycji. Myślałem, że to, co robię, jest dość powszechne. Czy nigdy nie masz drop-downów jako części edytowanych przez ciebie jednostek? Jak inaczej podchodzisz do problemu? Czy zazwyczaj tworzysz widoki częściowe tylko dla kontrolki rozwijanej? W jaki sposób wypełniasz drop-downy i czy akcje GET/POST nie mają innych parametrów? –