次の例は、私のために正常に動作します助けてくださいポストバック
なく、同じページ上の並べ替えやページできるようにしたかったです。
モデル:
public class MyViewModel
{
public string Bar { get; set; }
}
コントローラー:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Foo(string value)
{
var model = Enumerable.Range(1, 45).Select(x => new MyViewModel
{
Bar = "bar " + value + " " + x
});
return PartialView(model);
}
}
Index.cshtml
ビュー:
<script type="text/javascript">
$(function() {
$('#myddl').change(function() {
var url = $(this).data('url');
var value = $(this).val();
$.ajax({
url: url,
type: 'GET',
cache: false,
data: { value: value },
success: function (result) {
$('#result').html(result);
}
});
});
});
</script>
@Html.DropDownList(
"id",
new[] {
new SelectListItem { Value = "val1", Text = "value 1" },
new SelectListItem { Value = "val2", Text = "value 2" },
new SelectListItem { Value = "val3", Text = "value 3" },
},
new {
id = "myddl",
data_url = Url.Action("Foo", "Home")
}
)
<div id="result">
@Html.Action("Foo")
</div>
Foo.cshtml
部分:
@model IEnumerable<MyViewModel>
@{
var grid = new WebGrid(
canPage: true,
rowsPerPage: 10,
canSort: true,
ajaxUpdateContainerId: "grid"
);
grid.Bind(Model, rowCount: Model.Count());
grid.Pager(WebGridPagerModes.All);
}
@grid.GetHtml(
htmlAttributes: new { id = "grid" },
columns: grid.Columns(
grid.Column("Bar")
)
)
POSTの代わりにグリッドをリフレッシュするためにGETリクエストを使用したことに注目してください。この方法では、ドロップダウンリストでvalue
のクエリ文字列パラメータが将来のソートとページングのために保持されるためです。
感謝の男は魅力的に働いた! – Yasser
これも私を助けました:) –
ダーリンありがとう、それは魅力のように働いた。 – User5590