2010-12-01 20 views
0

ASP.NETの背景からMVC 3とRazorを覚えようとしています。MVC 3 - 選択したコントローラに部分ビューを投稿する

私は記事、ブログなどの他の場所で再利用できるように、(共有フォルダ内の)単純な部分表示を特定のコントローラに投稿したいと思っています。 。

@using (Html.BeginForm("Create", "Comment", FormMethod.Post, new { })) 
{ 
    <div> 
     <fieldset> 
      <legend>Comments</legend> 

      <div > 
       @Html.LabelFor(m => m.Name) 
       @Html.TextBoxFor(m => m.Name)    
      </div> 

      <div > 
       @Html.LabelFor(m => m.Email) 
       @Html.TextBoxFor(m => m.Email)    
      </div> 

      <div > 
       @Html.LabelFor(m => m.Body) 
       @Html.TextBoxFor(m => m.Body)    
      </div> 

      <p> 
       <input type="submit" value="Create" /> 
      </p> 
     </fieldset> 
    </div> 
} 

これはコメントには投稿されませんコントローラアクション次のように作成します。

[HttpPost] 
public ActionResult Create() 
{ 
    // Save comment code here 

    return View(); 
} 

特定の経路に縛られることなくこれを行う簡単な方法はありますか?

+0

生成されるフォームのHTMLソースはどのように見えますか?送信ボタンをクリックするとどうなりますか? – mlibby

+0

@mclコメントありがとうございます。送信ボタンをクリックすると、URLが/ Comment/Createに変わり、 '/ MVC3PartialView'アプリケーションでサーバーエラーが発生します。 URLを同じままにして、コメントコントローラに返信します。あなたはこれを行う方法を知っていますか?多分これを解決するアヤックスでしょうか? – ctb

+1

純粋なHTTPはあなたがフォームを/ Comment/CreateにPOSTしたいと思うので、あなたが望むものはajaxがなければかなり可能ではないと思います。私の推測はあなたの上の部分は "作成"と呼ばれていますか?これは、アクションのビューとしても機能しないことを意味します。あなたの作成したビューは「コメントありがとう」のようなシンプルなもの(ただし、完全なページ)でなければなりません(また、隠れたフォーム入力を使用すると、記事を見ることができます)。 – mlibby

答えて

1

回答が見つかりました。

@using (Ajax.BeginForm("Create", "Comment", new AjaxOptions() { 
     UpdateTargetId = "MainContainer" })) 
{ 
    <div> 
     <fieldset> 
      <legend>Comments</legend> 

      <div > 
       @Html.LabelFor(m => m.Name) 
       @Html.TextBoxFor(m => m.Name)    
      </div> 

      <div > 
       @Html.LabelFor(m => m.Email) 
       @Html.TextBoxFor(m => m.Email)    
      </div> 

      <div > 
       @Html.LabelFor(m => m.Body) 
       @Html.TextBoxFor(m => m.Body)    
      </div> 

      <p> 
       <input type="submit" value="Create" /> 
      </p> 
     </fieldset> 
    </div> 
} 

これはajaxを使用して返信され、URLは変更されません。または、JQueryを使用してこのようにすることができますhttp://jvance.com/blog/2010/02/20/MakingAnAjaxFormWithJQueryInASPdotNETMVC.xhtml

関連する問題