我有一个包含2个@DropDownListFor的Helpers的视图:
@using (Html.BeginForm("CreateOneWayTrip", "Trips"))
{
@Html.ValidationSummary(false);
<fieldset>
<legend>Enter Your Trip Details</legend>
<label>Start Point</label>
@Html.DropDownListFor(m => m.StartPointProvince, (SelectList)ViewBag.Provinces, new { @Id = "province_dll", @class = "form-control" })
@Html.DropDownListFor(m => m.StartPointCity, (SelectList)ViewBag.Cities, new { @Id = "city_dll", @class = "form-control" })
<p style="float: none; text-align: center;">
<button type="submit" value="Create" class="btn btn-info btn-circle btn-lg">
<i class="fa fa-check"></i>
</button>
<button type="submit" value="Create" class="btn btn-warning btn-circle btn-lg">
<i class="fa fa-times"></i>
</button>
</p>
</fieldset>
}
这是我用来捕获数据的临时模型:
public class CaptureCreateTrip
{
[Required]
[Display(Name = "Trip ID")]
public string TripID { get; set; }
[Required]
public string StartPointProvince { get; set; }
[Required]
public string StartPointCity { get; set; }
}
创建页面时将填充其中一个DropsDownList,而第二个将根据用户在第一个DropDownList中选择的选项进行填充。为了实现这一点,我正在使用ajax。我使用的javascript如下所示:
$("#province_dll").change(function () {
$.ajax({
url: 'getCities/Trips',
type: 'post',
data: {
provinceId: $("#province_dll").val()
}
}).done(function (response) {
$("cities_dll").html(response);
});
});
这是AJAX调用的Controller:
[HttpPost]
public ActionResult getCicites(int provinceId)
{
var lstCities = new SelectList(new[] { "City1", "City2", "City3" });
return Content(String.Join("", lstCities));
}
到目前为止,一切正常-当我在Province
DropDown中选择一个值时,将触发javascript事件,并且Controller操作确实将选择列表值返回给Cities
DropDown,但是问题是数据(数据格式)动作返回不正确。我通过创建一个Paragraph元素并使用ajax调用的返回值更新其文本来测试了这一点,该返回值是:“
System.Web.Mvc.SelectListItemSystem.Web.Mvc.SelectListItemSystem.Web.Mvc.SelectListListItem”
*注意:我是ajax的新手,正在学习Jquery和AJAX。
您获取字符串的原因"System.Web.Mvc.SelectListItemSystem"
是,该方法var lstCities = new SelectList(new[] { "City1", "City2", "City3" });
返回IEnumerable<SelectListItem>
并String.Join("", lstCities)
调用返回的集合.ToString()
中每个SelectListItem
项目的方法"System.Web.Mvc.SelectListItemSystem"
(而不是的Text
属性值SelectListItem
)
填充第二个下拉列表的最佳方法是返回包含城市集合的json并更新ajax成功回调中的DOM。没有理由创建SelectList
-它只是不必要的额外开销,并且您将至少3倍的数据返回给客户端(必要时,客户端没有C#SelectListItem
类的概念)。
public JsonResult FetchCities(int provinceId) // its a GET, not a POST
{
// In reality you will do a database query based on the value of provinceId, but based on the code you have shown
var cities = new List<string>() { "City1", "City2", "City3" });
return Json(cities, JsonRequestBehavior.AllowGet);
}
然后在脚本中(不确定为什么将默认值id
从修改id="StartPointProvince"
为id="province_dll"
,但是)
var url = '@Url.Action("FetchCities", "Trips")'; // Don't hard code your url's!
var cities = $('#city_dll'); // cache it
$("#province_dll").change(function () {
var id = $(this).val(); // Use $(this) so you don't traverse the DOM again
$.getJSON(url, { provinceId: id }, function(response) {
cities.empty(); // remove any existing options
$.each(response, function(index, item) {
cities.append($('<option></option>').text(item));
});
});
});
编辑
除了OP的注释,如果数据库包含Cities
带有字段ID
和的表名Name
,则controller方法将类似于
public JsonResult FetchCities(int provinceId) // its a GET, not a POST
{
var cities = db.Cities.Select(c => new
{
ID = c.ID,
Text = c.Text
}
return Json(cities, JsonRequestBehavior.AllowGet);
}
和创建选项的脚本将是
$.each(response, function(index, item) { // item is now an object containing properties ID and Text
cities.append($('<option></option>').text(item.Text).val(item.ID));
});
/views/fornecedor/ordersearch.xhtml@34,84 value=“#{order.id}”:类“java.util.HashSet”没有属性“id”。 和:
我正在使用核心数据,并试图用NSMutableSet来填充UITableView。我有两个实体,团队和球员。在我的addTeamsController上,我正在为球队保存一名球员,如下所示 在另一个viewController上,我试图用团队成员填充一个tableview。为了做到这一点,我做了如下工作 然后在我的行和索引路径单元格中,我执行以下操作 我得到了错误 我想知道填充按玩家名字排序的ta
格式 jsTree需要特定的格式才能使用JSON。在标准语法中,不需要任何字段-仅传递您需要的内容。请记住,您将能够访问您指定的任何其他属性-jsTree不会触及它们,以后您将能够使用它们(original在每个节点上使用该属性)。 要更改节点的图标,请使用icon属性。指定包含的字符串/将显示该图像作为节点图标。使用任何其他字符串将把该类<i>应用于用于表示图标的元素。您可以使用布尔值false
基本标记 jsTree 可以将常规无序列表变成树。所需的最小标记是一个<ul>带有嵌套<li>节点的节点,其中嵌套了一些文本。 您应该有一个包装的容器,<ul>并在该容器上创建实例。像这样: $('#html1').jstree();. <div id="html1"> <ul> <li>根节点 1</li> <li>根节点 2</li> </ul> </div>
问题内容: 我的Android应用程序需要使用中填充ListView数据ArrayList。 我这样做很麻烦。有人可以帮我提供代码吗? 问题答案: 你需要通过进行操作,以使ArrayList(或任何其他集合)适应布局中的项目(ListView,Spinner等)。 这是Android开发人员指南所说的: 一个管理任意对象数组支持的。默认情况下,此类期望提供的资源ID引用单个。如果要使用更复杂的布局
问题内容: 如何用对象类型的列表中的值填充JTable。我的代码如下所示: 我已经有了列,列表将来自schedule变量?考虑这些列,如何将其放到表中? 问题答案: 看一下DefaultTableModel。您可以遍历List并为每一行创建Object数组。