0

これを実装する方法がわかりません。ControllersフォルダーにMovieController.csがあり、ModelsフォルダーにMovieCreateViewModel.csがあります。ビューの作成、編集、削除の検証を追加する必要があります。

MovieDetailsViewModel.cs

public class MovieDetailsViewModel
{
    public int Id { get; set; }
 }     

それから私はMovieController.csを持っています

public class MovieController : Controller
{

    Connect connection;
    MovieCreateViewModel movie;
    MovieDetailsViewModel id;

    public MovieController()
    {
        this.connection = new Connect();
        this.movie = new MovieCreateViewModel();
        this.id = new MovieDetailsViewMode();
    } 

    public ActionResult Edit(MovieDetailsViewModel id)
    {
        movie = this.connection.MovieContext.Where(m => m.ID == id).SingleOrDefault();  **//I get an error here**
        return View(movie);
    }

    //
    // POST: /Movie/Edit/5

    [HttpPost]
    public ActionResult Edit(MovieCreateViewModel movieedit)
    {
        try
        {
            if (ModelState.IsValid)
            {
                this.connection.MovieContext.AddObject(movieedit);
                this.connection.MovieContext.Context.SaveChanges();
                return RedirectToAction("Index");
            }

        }
        catch
        {
            return View(movieedit);
        }
    }

httpPostのMovieDetailsViewModel id場合、パラメータリストにタイプを作成しました。ここからどこに移動しますか?

ありがとう

4

2 に答える 2

1

これで、モデルインスタンスに対して検証が実行されます。これを確認するには、次のようにします。

ModelState.IsValid

保存操作前のコントローラー方式。ビューの入力名がモデルクラスのプロパティ名に対応している限り、アクションメソッドが実行される前に、バインドと検証が暗黙的に実行されます。ビューに検証メッセージを表示するには、ビューの上部にHtml.ValidationMessage()を追加します。お役に立てれば。ちなみに、条件付き検証属性やその他の優れた機能を提供するFoolproofValidationをチェックする価値は十分にあります。

于 2012-07-13T08:14:36.533 に答える
0

より良い方法は、別々のモデルとビューモデルを使用することです。モデルをviewmodelに変換し、それをビューに渡します

public ActionResult Edit(int id)
{
     var movie = this.connection.MovieContext.SingleOrDefault(m => m.ID == id);
     var vm = new MovieCreateViewModel{ Id = movie.Id};
     return View(vm);
}

//
// POST: /Movie/Edit/5

[HttpPost]
public ActionResult Edit(MovieCreateViewModel vm)
{
    try
    {
        if (ModelState.IsValid)
        {
            var movie = new Movie{Id = vm.Id};
            this.connection.MovieContext.Attach(movie);
            this.connection.MovieContext.Context.SaveChanges();
            return RedirectToAction("Index");
        }

    }
    catch
    {
        return View(movieedit);
    }
}
于 2012-07-13T08:53:20.930 に答える