2011-06-29 36 views
2

なぜこれが機能しないのですか?それは、CreateメソッドでリダイレクトするときにEditStudyModelの必要性を私に教え続けます。リダイレクトはget、rightを実行する必要がありますか?あなたは文字列としてURLにリダイレクトを返送しているmvc3 RedirectToAction

public ViewResult Create() 
    { 
     var createStudyModel = new CreateStudyModel(); 
     return View(createStudyModel); 
    } 

    [HttpPost] 
    public ActionResult Create(CreateStudyModel createStudyModel) 
    { 
     try 
     { 
      //TODO: Send CreateStudyCommand 
      return RedirectToAction("Edit", new { scientificStudyId = new Guid("{1C965285-788A-4B67-9894-3D0D46949F11}") }); 
     } 
     catch 
     { 
      return View(createStudyModel); 
     } 
    } 

    [GET("ScientificStudy/Create/{scientificStudyId}")] 
    public ActionResult Edit(Guid scientificStudyId) 
    { 
     //TODO: Query real model 
     var model = new EditStudyModel() {StudyNr = "T01", StudyName = "Test"}; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Edit(EditStudyModel editStudyModel) 
    { 
     try 
     { 
      //TODO: Send UpdateStudyCommand 
      return RedirectToAction(""); //TODO: Terug naar Studie lijst 
     } 
     catch 
     { 
      return View(editStudyModel); 
     } 
    } 
+0

何である '[GET( "ScientificStudy /作成/ {scientificStudyId}")]'上を編集メソッド? getのurlはおそらく 'ScientificStudy/EDIT/{scientificStudyId}'であるべきだから、その属性はおそらく正しいアクションが見つかったかどうかを確認する要求を検証するでしょう。 – Buildstarted

+0

編集アクションで[GET]属性が認識されません。これはカスタム属性ですか? –

+0

mvc属性ルーティングです。 –

答えて

0

:に変更します。私は、最初の行を変更し忘れたedit.cshtmlために私create.cshtmlをコピー&ペースト: @model Website.Models.CreateStudyModel - >へ - >@model Website.Models.EditStudyModel

1

、コントローラは、GUIDを解析し、バックGUIDオブジェクトに変換することができませんので、それはへの正しいメソッドのシグネチャを解決することができませんつかいます。私は問題を発見した

return RedirectToAction("Edit", new { scientificStudyId = "{1C965285-788A-4B67-9894-3D0D46949F11}" }); 

public ActionResult Edit(string scientificStudyId) 
+1

本当ですか?デフォルトのモデルバインダーは、それを把握するのに十分なほどスマートです。 – Buildstarted

+0

ええ、それをテストし、それは正常に動作します。 EditメソッドのパラメータをGuidに設定すると、正しく解析されます。 – Buildstarted

関連する問題