2016-12-23 3 views
0

マイpartialview:MVC5 partialviewから投稿をするには?

@model Alina_2017.Models.DropDownModel 

<h2>Groepen</h2> 
<div> 


    <div> 
     @using (Html.BeginForm("SelectGroup", "~/Controllers/WerkvormController")) 
     { 
      @Html.DropDownListFor(x => x.selectedItem, new SelectList(ViewBag.groepen, "id", "Naam"), "Select", new { @class = "form-control" }) 
      <input type="submit" id="zoekgroep" value="Zoeken" /> 
     } 
    </div> 
</div> 

私のメインビュー:

@model Alina_2017.Models.WerkvormModel 

@{ 
    ViewBag.Title = "Index"; 
} 

@Html.Partial("~/Views/DropDown/Groepen.cshtml") 

//More irrelevant html 

マイコントローラ:

public ActionResult Index() 
{ 


    ViewBag.groep1 = convertWerkvorm(db.Werkvormens.Where(f => f.GroepenWerkvormID == 1).ToList()); 
    ViewBag.groep2 = convertWerkvorm(db.Werkvormens.Where(f => f.GroepenWerkvormID == 2).ToList()); 
    ViewBag.groep3 = convertWerkvorm(db.Werkvormens.Where(f => f.GroepenWerkvormID == 3).ToList()); 
    setViewBags(); 
    return View(); 
} 

[HttpPost] 
public ActionResult SelectGroup(DropDownModel model) 
{ 
    // the value is received in the controller. 
    var selectedItem = model.selectedItem; 
    Debug.WriteLine(selectedItem); 
    return View("Index"); 
} 

私はHTTPエラー404.0取得しています - が見つかりませんでしたが。別のコントローラからアクションを呼び出すことは可能ですか?パーシャルビューの理由は、2つの異なるモデルを使用している+私は複数の他のビューでパーシャルビューを使用しているからです(少なくとも1回は動作させることになります)。

答えて

1

コントローラの名前が間違っています。

あなたがブラウザでソースを表示する場合は、実際の投稿のURLを確認するか、ブラウザの開発ツールでネットワーク]タブを確認することができます

@using (Html.BeginForm("SelectGroup", "Werkvorm")) 

@using (Html.BeginForm("SelectGroup", "~/Controllers/WerkvormController")) 

を交換してください。

+0

ありがとうございます!私は実際に最初にそれを試みましたが、Werkvormの代わりにWerkvormControllerを置くので、なぜフルパスを使用しましたか。それは今意味があります、ありがとう:) – user3117628

2

BeginForm()メソッドの2番目の引数は、単にコントローラではなく、そのファイルの名前です:あなたはどこからでも任意のサーバー側のアクションに投稿することができます

@using (Html.BeginForm("SelectGroup", "Werkvorm")) 
{ 

} 

。ビューがレンダリングされる方法に基づいて制限はありません。なぜなら、すべてがレンダリングされると、どこから来てもクライアント側のマークアップだけなのだからです。

学習の練習として、ブラウザのデバッグツールで実際に表示されるマークアップを調べて、フォーム用に作成されたURLを確認してください。部分ビューがどのように配置されているか、どのコントローラがビューを戻したか、モデルが何であるかなどに関係なく、最終的にHTMLだけです。単純な.htmlファイルを手作業で書いて、サーバー側ASP.NET MVCアクションに正常に投稿するフォームを作成することもできます。

+0

あなたの返信ありがとう、確かにそれをチェックアウトする! – user3117628

関連する問題