Thi*_*ago 6 json razor asp.net-mvc-3
我有一个<select>
由JSon加载的.但我想用"@html.dropdownlist helper"代替.我的Json是:
function LoadSites() {
$("SelectSite").html("");
$.getJSON("/Pedido/GetSite", null, function (data) {
$("#SelectSite").append("<option value=0>Selecione...</option>");
$.each(data.Result, function (index, site) {
$("#SelectSite").append("<option value='" + site.Id + "'>" + site.Nome + "</option>");
});
});
Run Code Online (Sandbox Code Playgroud)
这个Json填充了这个......
<select id="SelectSite"></select>
Run Code Online (Sandbox Code Playgroud)
我的控制器:
[HttpGet]
public JsonResult GetSite()
{
Repository<Site> siteRepo = new Repository<Site>( unitOfWork.Session );
return this.Json( new { Result = siteRepo.All() }, JsonRequestBehavior.AllowGet );
}
Run Code Online (Sandbox Code Playgroud)
我希望我的代码更可重用和自我记录.如何使用dropdownlist将对象"site"从JSon发送到"cshtml"来执行类似的操作@html.dropdownlist(site.id, site.Nome)
?
有办法吗?
Tks伙计们
Dar*_*rov 18
在你看来:
@Html.DropDownListFor(x => x.SiteId, new SelectList(Enumerable.Empty<SelectListItem>()))
Run Code Online (Sandbox Code Playgroud)
SiteId
视图模型的属性在哪里,在提交表单时将接收选定的网站ID.
然后你可以使用AJAX填充这个下拉列表:
$(function() {
$.getJSON('@Url.Action("GetSite", "Pedido")', function(result) {
var ddl = $('#SiteId');
ddl.empty();
$(result).each(function() {
ddl.append(
$('<option/>', {
value: this.Id
}).html(this.Nome)
);
});
});
});
Run Code Online (Sandbox Code Playgroud)
以及将返回JSON数据的控制器操作:
public ActionResult GetSite()
{
var sites = new[]
{
new { Id = "1", Nome = "site 1" },
new { Id = "2", Nome = "site 3" },
new { Id = "3", Nome = "site 3" },
};
return Json(sites, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21688 次 |
最近记录: |