私はドロップダウンリストを持つフォームを持っています。オプションを選択すると、ビュー内のリンクのリストを動的に追加するためのajax呼び出しを行います。リンクの1つをクリックすると、PostListSubCategory()
メソッドによって返された部分的なビューで既存のページを更新したいと考えています。Ajaxを介して生成されたアンカータグの中に部分的なビューをロードする方法
現在、リンクの1つをクリックするとリダイレクトされ、新しいページに部分的な表示が表示されます。既存のページを更新するにはどうすればよいですか?
<script language="javascript" type="text/javascript">
function GetSubCategory(_categoryId) {
var procemessage = "<a='0'> Please wait...</a>";
$("#SubCategoryID").html(procemessage).show();
var url = "/Posts/GetSubCategoryById/";
$.ajax({
url: url,
data: { categoryid: _categoryId },
cache: false,
type: "POST",
success: function (data) {
var markup = "";
for (var x = 0; x < data.length; x++) {
var num = data[x].Text;
markup += "<a href='/posts/postlistsubcategory?subcategoryid=" + data[x].Text + "'>" + data[x].Text + "</a><br />";
// markup += "<a href=" + Url.Action("postlistsubcategory", new { subcategoryid = num });
}
$("#SubCategoryID").html(markup).show();
},
error: function (reponse) {
alert("error : " + reponse);
}
});
$.ajax({
url: "/Posts/PostListCategory",
data: { categoryid: _categoryId },
cache: false,
type: "POST",
success: function (data) {
$("#postList").html(data).show();
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
</script>
@using (Html.BeginForm())
{
@Html.ListBoxFor(m => m.CategoryModel, new SelectList(Model.CategoryModel, "CategoryId", "Name"), new { @id = "ddlcategory", @style = "width:200px;", @onchange = "javascript:GetSubCategory(this.value);" })
<br />
<br />
<div id="SubCategoryID" name="SubCategoryID" style="width: 200px"></div>
<br /><br />
}
コントローラ
public PartialViewResult PostListSubCategory(string subcategoryid)
{
if (subcategoryid == null)
{
return PartialView(db.Posts.ToList());
}
return PartialView("PostList", db.Posts.Include(i => i.SubCategory).Where(p => p.SubCategory.Name == subcategoryid));
}
あなたは部分ビューを返します(リンクは動的に追加されているので、あなたが
.on()
メソッドを使用してイベントの委任を必要とする)リンクの.click()
イベントを処理するために、追加のスクリプトを追加= 0; x最初のAjax関数は別の 'PartialView'からのもので、リストを生成します選択されたカテゴリ内のサブカテゴリを同時に表示し、同時に 'PartialViewResult PostListSubCategory'をロードする – Sugafree
何??あなたが表示したものではない場合、あなたはajax呼び出しが呼び出しているメソッドとは何ですか(そして、関連性がない場合にそのメソッドをなぜ表示していますか)。そしてあなたのリンクを 'href'属性で作成することで、もちろんリダイレクトされます(これはリンクです) –