私がやろうとしているのは、jquery ダイアログを開くことです。何が起こっているかというと、PartialView を開こうとすると、次の html テキストとフォームのレンダリングが表示されます。
<form action="/Plt/FileUpload" method="post"><input data-val="true" data-val-number="The field PlNum must be a number." data-val-required="The PlNum field is required." id="PlNum" name="PlNum" type="hidden" value="36028" /> <div id="errMsg" >
</div>
<p>File upload for Pl# 36028</p>
<input type="file" name="file" />
<input type="submit" value="OK" />
</form>
コントローラーのアクションは次のとおりです。
public ActionResult FileUpload(int id)
{
var model = new FileUpload { PlNum = id };
return PartialView(model);
}
PartialView のビューは次のようになります。
@model Ph.Domain.Lb.Models.FileUpload
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("FileUpload", "Plts", FormMethod.Post, null))
{
@Html.HiddenFor(a => a.PlNum)
<div id="errMsg" >
@if (TempData["ErrMessage"] != null)
{
@TempData["ErrMessage"]
}
</div>
<p>File upload for Pl# @Model.PlNum</p>
<input type="file" name="file" />
<input type="submit" value="OK" />
}
これは私のajax呼び出しがどのように見えるかです:
var url = '@Url.Action("FileUpload", "Plt")' + '?id=' + encodeURIComponent(rowid);
$.ajax({
url: url,
type: 'GET',
success: function(result) {
if (result.success) {
$('#dialog').dialog('close');
} else {
// refresh the dialog
$('#dialog').html(result);
}
}
要約すると、ajax 呼び出しは ActionResult に到達しますが、HTML とレンダリングされた html を示す部分ビューをいつ表示しようとするかはわかりません。