ご容赦ください、私はasp.net MVC 3を学んでいます.. :)
膨大な数のフォーラム スレッドを検索しましたが、自分のプロジェクトに適した解決策を実際に見つけることができません..
シナリオ: 体をレンダリングする _layout があります。現在苦労しているボディには、ajax.actionlink とプレースホルダー div を介して更新される部分ビューがあります。
メインビュー(短縮)
<div class="mini-menu-content">
Product
<ul>
<li>
@Ajax.ActionLink("Aanmaken", "_addProduct", new { type = "Beheer/Add/_addProduct" },
new AjaxOptions
{
UpdateTargetId = "container",
InsertionMode = InsertionMode.Replace,
HttpMethod = "GET"
})
</li>
</ul>
</div>
<div id="container">@Html.Partial("Beheer/_welkom")
</div>
その部分的なビューには、Html.BeginForm があり、すべての必要な (モデル) 製品属性の入力が含まれています。また、ユーザーにファイルをアップロードするように求めます。
部分図 (これも短縮)
@model BlokCWebwinkelGroep3.Models.Product
@using (Html.BeginForm("_addProduct", "Beheer", FormMethod.Post,
new
{
enctype = "multipart/form-data",
id = "Form",
name = "Form"
}))
{
//All the input fields for the model
<div class="editor-label">
Plaatje:
</div>
<div class="editor-field">
<input type="file" name="imageFile" required="true" />
<input type="submit" value="Aanmaken" />
</div>
}
このフォームは、ファイル (画像) を保存してパス (todo) を取得するアクションメソッドにリンクし、パスと製品をデータベースに保存し、ビューを返します. 残念ながら問題があります. そのビューを返す方法がわからないので、メイン ビューのコンテナ div のコンテンツを置き換えます。新しいページを取得するだけです...
コントローラ
public ActionResult Beheer()
{
return View();
}
public ActionResult _addProduct(string type)
{
return PartialView(type);
}
[HttpPost]
public ActionResult _addProduct(HttpPostedFileBase imageFile, Product product)
{
if (ModelState.IsValid && (imageFile != null && imageFile.ContentLength > 0))
{
//Save to folder, get path, call dbcontroller and save all of it in db.
return PartialView("Beheer/_welkom");
}
else
{
return PartialView("Beheer/Add/_addProduct", product);
}
}
結びの質問
メイン ビューにある div id="container" の _addProduct パーシャルを、コントローラーの actionmethod _addProduct からレンダリングするにはどうすればよいですか?
事前に感謝します。