此代碼的工作:有沒有辦法更新MVC2中的ViewModel?
[HttpPost]
public ActionResult Edit(int id, FormCollection fc)
{
Movie movie =
(
from m in _ctx.Movie.Include("MovieActors")
where m.MovieID == id select m
).First();
MovieActorViewModel movieActor = new MovieActorViewModel(movie);
if (TryUpdateModel(movieActor))
{
_ctx.ApplyPropertyChanges(movieActor.Movie.EntityKey.EntitySetName,
movieActor.Movie);
_ctx.SaveChanges();
}
return View(movieActor);
}
但是,我不知道如何測試這一點,和一般寧願有方法採取類型化的模式,如:
[HttpPost]
public ActionResult Edit(MovieActorViewModel movieActor)
這可能嗎?爲了啓用此功能,我需要對MovieActorViewModel類進行哪些更改?這個類看起來是這樣的:
public class MovieActorViewModel
{
public Movie Movie { get; set; }
public Actor Actor { get; set; }
public PublisherDealViewModel(Movie movie)
{
this.Movie = movie;
this.Actor =
(
from a in this.Movie.Actors
where a.ActorID == 1 select a
).First();
}
}
的視圖類型(繼承的ViewPage)簡單:
<% using (Html.BeginForm()) {%>
Movie Title: <%= Html.TextBoxFor(model=>model.Movie.Title) %><br/>
Actor Name: <%= Html.TextBoxFor(model=>model.Actor.Name) %>
<% } %>
發佈您的頁面標記代碼 - 您是否使用Html.TextBoxFor()等強類型的Html助手? – 2010-03-02 01:42:27
是的,我是。只有2個屬性在頁面上進行測試: <%= Html.TextBoxFor(model => model.Movie.Title)%> 和 <%= Html.TextBoxFor(model => model.Actor.FirstName)% > – Juvaly 2010-03-02 02:08:35
我以最惱人的方式工作。將MovieActorViewModel屬性名稱從Actor更改爲ActorInfo。我不知道爲什麼這個技巧... – Juvaly 2010-03-03 14:53:54