0
私はマスターと詳細(画像、ASO)が1ページに表示されるページを構築しました。ただし、2番目のフォームのsubmittボタンをクリックすると、1番目のフォームの検証が失敗した場合、フォームは送信されません。値を修正すると、HttpPostedFileBase uploadFile
はnullになります。MVCページの2番目のフォームの入力を取得
ページには、次のようになります。
@model app1.Models.MasterModel
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm(new { @class = "form-inline col-lg-12" }))
{
@Html.AntiForgeryToken()
<div>
<h4>MasterModel</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.Id)
<div class="row">
@*Master properties*@
<div class="col-md-4 col-lg-4">
<div class="form-horizontal">
<div class="form-group">
@Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-8">
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
</div>
</div>
@* aso... *@
</div>
</div>
}
@* Master Details *@
<div class="col-md-4 col-lg-4">
@using (Html.BeginForm("NewPic", "Master", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input name="uploadFile" type="file" />
<input type="submit" value="Upload File" /> <!-- First Button, does not work -->
<div class="container-fluid">
@foreach (app1.Models.PicModel b in Model.Pics)
{
var base64 = Convert.ToBase64String(b.DbPic);
var imgSrc = String.Format("data:image/gif;base64,{0}", base64);
<img src="@imgSrc" width="200" height="200" />
}
</div>
@Html.ActionLink("Upload", "NewPic", new { id = Model.Id }) <!-- Second Button, does not work either -->
<label class="control-label col-md-4 col-lg-4" for="Title">Picer</label>
}
</div>
</div>
<div>
<div class="form-group">
<div class="col-md-offset-2 col-md-12 col-lg-12">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
コントローラは次のようになります。
public ActionResult NewPic(int id, HttpPostedFileBase uploadFile)
{
// uploadFile is null
}
をご覧ください。どのボタンをクリックしていますか? –
これを2つの部分的なビューに分割すると、問題を解決するのに役立ち、コードをより明確にするのに役立ちます。 –
ajaxフォームを使用しようとすると、これは2番目のフォーム –