親ページをリロードせずにasp.net mvcで部分ビューフォームを送信する方法はありますが、部分ビューのみを新しい状態にリロードしますか? データバインドを使用してknockout.jsを更新する方法に似ています。
私のデータ テーブルは可変数の列/名前でレンダリングされるため、knockout.js はこのオプションではないと思います。そのため、代わりに部分ビューを使用しようとしています。
親ページをリロードせずにasp.net mvcで部分ビューフォームを送信する方法はありますが、部分ビューのみを新しい状態にリロードしますか? データバインドを使用してknockout.jsを更新する方法に似ています。
私のデータ テーブルは可変数の列/名前でレンダリングされるため、knockout.js はこのオプションではないと思います。そのため、代わりに部分ビューを使用しようとしています。
jQueryなしではありません。
あなたがしなければならないことは、あなたのパーシャルを次のようなdivに入れることです:
<div id="partial">
@Html.Partial("YourPartial")
</div>
次に、更新する (たとえば、 id のボタンをクリックするbutton
) には、次のようにします。
$("#button").click(function () {
$.ajax({
url: "YourController/GetData",
type: "get",
data: $("form").serialize(), //if you need to post Model data, use this
success: function (result) {
$("#partial").html(result);
}
});
})
次に、アクションは次のようになります。
public ActionResult GetData(YourModel model) //that's if you need the model
{
//do whatever
return View(model);
}
実際、Partialに子アクションメソッドがある場合は、子アクションに直接投稿(またはアンカーリンクを使用)して、Ajaxのような効果を得ることができます。これはいくつかのビューで行います。
構文は
@Html.Action("MyPartial")
チャイルドアクションは
public ActionResult MyPartial()
{
return PartialView(Model);
}
フォームが子アクションに投稿する場合
@using (Html.BeginForm("MyPartial"))
{
...
}
部分ビューは、子アクションから返された部分ビューで更新されます。
Jqueryは、パーシャルを更新するための正当な方法です。しかし、技術的には、あなたの質問に対する答えは「はい」です。
通常、このようなものを探しているときに見つけたのは、人々が提供する情報があまりにも限られているため、ここで助けようとします. 重要なのは、戻り値の html を追加できる ID を使用して div を設定することです。また、コントローラーを叩いたときに、パーシャルが返されることを確認してください。この方法には潜在的な問題がいくつかありますが、天気の良い日にはうまくいくはずです。
<div id="CategoryList" class="widget">
@{
Html.RenderPartial("WidgetCategories.cshtml");
}
</div>
function DeleteCategory(CategoryID) {
$.get('/Dashboard/DeleteWidgetCategory?CategoryID=' + CategoryID,
function (data) {
if (data == "No") {
alert('The Category has report widgets assigned to it and cannot be deleted.');
}
else {
$('#CategoryList').html(data);
}
}
);
}
[HttpGet("DeleteWidgetCategory")]
[HttpPost("DeleteWidgetCategory")]
public IActionResult DeleteWidgetCategory(string CategoryID)
{
string Deleted = CategoryModel.DeleteCategory(CategoryID);
if (Deleted == "Yes")
{
return PartialView("WidgetCategories");
}
else
{
return this.Json("No");
}
}
このようなシナリオでは、部分ビューと @html.RenderPartial("partialName") 部分ヘルパーを使用して Ajax Form ヘルパーを使用します。