私はASP.NETを初めて使用しています。メインビューにコンテンツを追加する際に問題があります。 HtmlBeginformでは、ボタンをクリックしてファイルをロードした後にファイルをアップロードします。メインビューの下に部分ビューを表示する必要があります。ajaxスクリプトを正しく呼び出す方法はわかりません。asp.net mvc ajaxを使用して動的に部分ビューを追加する
私のメインビュー:私はメインビューに追加したい
@using prvniAplikace.Models;
@using Chart.Mvc.ComplexChart;
@using Chart.Mvc.Extensions;
@{
ViewBag.Title = "Index";
}
@using (Html.BeginForm("LoadFile", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
<div class="form-group" align="left">
<label for="exampleInputFile">Load File</label>
<input type="file" accept=".tcx" class="form-control-file" name="exampleInputFile" id="exampleInputFile" aria-describedby="fileHelp">
</div>
<div class="form-group" align="left">
<button class="btn btn-primary" type="submit" id="add" name="add" value="Add">Display</button>
</div>
}
@section Scripts {
<script type="text/javascript">
$("#add").on('click', function() {
$.ajax({
async: false,
url: '/Home/getContent'
}).success(function (partialView) {
$('#getContent').append(partialView);
});
});
</script>
}
ビュー:
@{
ViewBag.Title = "getContent";
Layout = null;
}
<h2>Obsah</h2>
<p>Odstavec</p>
<p>@DateTime.Now.ToString()</p>
はコントローラー:あなたのコメントを1として
namespace prvniAplikace.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
public ActionResult getContent()
{
return PartialView("~/Views/Home/AjaxRequest.cshtml");
}
[HttpPost]
public ActionResult LoadFile(HttpPostedFileBase exampleInputFile)
{
if (exampleInputFile.ContentLength > 0)
{
var fileName = Path.GetFileName(exampleInputFile.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
exampleInputFile.SaveAs(path);
string xmlFile = Server.MapPath(fileName);
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList nodes = doc.GetElementsByTagName("HeartRateBpm");
XmlNodeList nodes2 = doc.GetElementsByTagName("Time");
}
return RedirectToAction("Index");
}
}
}
現在、あなたのAJAX呼び出しがAjaxのファイルのアップロードを行いません追加ボタンをクリック、とまで有線ますが、通常のフォームが提出され、あなたが理由で(その後インデックスページへの新しいGETをやってますRedirectToActionメソッド呼び出し)。あなたはいつ部分ビューのコンテンツを表示したいですか?成功したアップロードの後でインデックスページが読み込まれるとき(ajaxファイルのアップロードではない)? – Shyju
私は通常の送信フォームを使ってファイルをアップロードしています。そして私は現在のビューの下にさらにコンテンツを追加する必要があります。アップロードの成功後にインデックスページが読み込まれず、メッセージが表示されます。あなたはそれを違うように提案していますか? –
これは通常のフォーム送信であるため、送信ボタンをクリックするとフォームが送信され、サーバーは302の応答を返します(新しいGET要求の場合はインデックスページに戻ります)。実際に、このフローで部分ビューの結果をいつ表示したいのですか? – Shyju