- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 ASP.NET 非常陌生,我正在使用 ASP.Net 的 MVC 3 框架。我试图使用另一个下拉列表来过滤下拉列表的选项,但我无法做到这一点。我试图首先通过填充主类别和子类别列表并将它们加载到页面来做到这一点。然后将每个子类别的选项的类属性设置为其父类别。最后,从第一个下拉列表中单击父类别时,仅显示子子类别并隐藏其余部分(这就是我之前在 java 中所做的)。但在 ASP.Net MVC 中,html 代码是如此不同,我什至无法为下拉列表的每个选项设置类属性,它通常为所有下拉列表设置类,而不是为每个选项设置类。这就是我现在所拥有的这是我的观点
<p>
@Html.LabelFor(model => model.CategoryId)
@Html.DropDownListFor(x => x.CategoryId , new SelectList(Model.Categories, "CategoryId", "CategoryName"), new { onchange= "this.form.submit();"})
</p>
<p>
@Html.LabelFor(model => model.SubCategories)
@Html.DropDownListFor(x => x.SubCategories, new SelectList(Model.SubCategories, "SubCategoryId", "SubCategoryName"), new { @class = "Category1.categoryname" })
</p>
这是我的模型
public class TestQuestionsViewModel
{
public string CategoryId { get; set; }
public IEnumerable<Category> Categories { get; set; }
public string SubCategoryId { get; set; }
public IEnumerable<SubCategory> SubCategories { get; set; }
}
这是我的 Controller 类方法
public ActionResult Create()
{
var model = new TestQuestionsViewModel
{
Categories = resetDB.Categories.OrderBy(c => c.categoryid),
SubCategories = resetDB.SubCategories.OrderBy(sc => sc.subcategoryid)
};
return View(model);
}
我的问题是如何为每个单独的选项设置类属性。或者,如果有人对如何以不同的方式做到这一点有建议,我愿意接受任何解决方案。谢谢。
最佳答案
在页面最初加载时将所有子项目加载到页面,对我来说似乎不是一个好主意。如果您有 100 个类别,每个类别有 200 个子类别项目怎么办?您真的要加载 20000 个项目吗?
我认为你应该采用增量加载方式。为“主要类别”下拉列表提供值,让用户从中选择一项。调用服务器并获取属于所选类别的子类别并将该数据加载到第二个下拉列表中。您可以使用 jQuery ajax 来做到这一点,这样用户在选择一个下拉菜单时就不会感觉到页面完全重新加载。这就是我要做的。
创建具有两个类别属性的 ViewModel
public class ProductViewModel
{
public int ProductId { set;get;}
public IEnumerable<SelectListItem> MainCategory { get; set; }
public string SelectedMainCatId { get; set; }
public IEnumerable<SelectListItem> SubCategory { get; set; }
public string SelectedSubCatId { get; set; }
}
让您的 GET Action 方法返回此强类型 View ,其中填充了 MainCategory 的内容
public ActionResult Edit()
{
var objProduct = new ProductViewModel();
objProduct.MainCategory = new[]
{
new SelectListItem { Value = "1", Text = "Perfume" },
new SelectListItem { Value = "2", Text = "Shoe" },
new SelectListItem { Value = "3", Text = "Shirt" }
};
objProduct.SubCategory = new[] { new SelectListItem { Value = "", Text = "" } };
return View(objProduct);
}
在你的强类型 View 中,
@model MvcApplication1.Models.ProductViewModel
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.SelectedMainCatId, new SelectList(Model.MainCategory,"Value","Text"), "Select Main..")
@Html.DropDownListFor(x => x.SelectedSubCatId, new SelectList(Model.SubCategory, "Value", "Text"), "Select Sub..")
<button type="submit">Save</button>
}
<script type="text/javascript">
$(function () {
$("#SelectedMainCatId").change(function () {
var val = $(this).val();
var subItems="";
$.getJSON("@Url.Action("GetSub","Product")", {id:val} ,function (data) {
$.each(data,function(index,item){
subItems+="<option value='"+item.Value+"'>"+item.Text+"</option>"
});
$("#SelectedSubCatId").html(subItems)
});
});
});
</script>
将 GetSub 操作方法添加到 Controller 以返回所选类别的子类别。我们将以 Json 形式返回响应
public ActionResult GetSub(int id)
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem() { Text = "Sub Item 1", Value = "1" });
items.Add(new SelectListItem() { Text = "Sub Item 2", Value = "8"});
// you may replace the above code with data reading from database based on the id
return Json(items, JsonRequestBehavior.AllowGet);
}
现在所选值将在您的 HTTPOST 操作方法中可用
[HttpPost]
public ActionResult Edit(ProductViewModel model)
{
// You have the selected values here in the model.
//model.SelectedMainCatId has value!
}
关于asp.net-mvc - 如何使用另一个下拉列表过滤下拉列表的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304489/
场景 网站页面有一个带有分页、过滤、排序功能的表格 View 。 表中的数据是从REST API服务器获取的,数据包含数百万条记录。 数据库 REST API 服务器 Web 服务器 浏览器 问
我有一个表student,其中的列dte_date(日期)具有值(2019-01-01、2019-02-01、2019-03-01)。 .等) 条件: dte_date 列中没有重复值。 但 dte_
我有一些逻辑可以根据不活动的用户创建通知。我正在获取具有以下属性的用户列表。我想做的只是在部门有非 Activity 用户时触发我的创建通知方法。因此,给出下面的列表,基本上会创建 1 个通知,表示部
使用 GPS 开发跟踪应用程序。一切都很好,但有时由于封闭区域或恶劣天气,我得到的分数不准确。当您绘制它们时,它看起来不对,有很多跃点/跳跃。 我应该运行什么算法来过滤掉不良信号对我来说,这看起来像是
我正在尝试按变量类型过滤对象数组。节点是一个具有位置的对象,但以不同的方式定义——作为点、矢量或附件。这是一个代码: class Joint { var position:Position
我想做的是在向量上创建一个过滤器,以便它删除未通过谓词测试的元素;但不太确定我该怎么做。 我根据谓词评估输入向量中的每个元素,例如在我的代码中,is_even 仿函数在 device_vector 向
我是 Gremlin 的新手,我正在使用 Gremlin 3.0.2 和 Stardog 5.0。我编写此查询是为了找出 schema.org 本体中两个实体之间的路径。以下是输出 - gremlin
考虑以下示例数据表, dt 30 的那一行需要去 - 或者如果其中两行 > 30相隔几秒钟,删除所有 3 个。然而 ,当我们有 4 行或更多行时,我们需要删除时间差 > 30 没有另一对 < 30
我正在考虑使用 ZeroMQ,并尝试了一些示例。但是,我无法验证 ZeroMQ 是否支持一些重要的要求。我希望你能帮助我。 我将使用这个简单的场景来问我的问题: 出版商(例如交易所)提供(大量)股票的
我需要从我的查询中过滤掉大量的对象。目前,它正在抓取类中的所有对象,我想将其过滤为查询字符串中的相关对象。我怎样才能做到这一点?当我尝试时,我收到一个属性错误说明 ''QuerySet' object
如何在 Prometheus 查询中添加标签过滤器? kube_pod_info kube_pod_info{created_by_kind="ReplicaSet",created_by_name=
我有包含字符串的列的数据框,并希望过滤掉包含某些字符串以外的任何内容的所有行。考虑下面的简化示例: string % dplyr::filter(stringr::str_detect(string,
我有以下数据框,其中包含多行的角度变化值: 'data.frame': 712801 obs. of 4 variables: $ time_passed: int 1 2 3 4 5 6
我有一个 BehaviorSubject我希望能够filter ,但要保持新订阅者在订阅时始终获得一个值的行为主题式质量,即使最后发出的值被过滤掉。有没有一种简洁的方法可以使用 rxjs 的内置函数来
我有一个 RSS 提要,每天输出大约 100 篇文章。我希望过滤它以仅包含更受欢迎的链接,也许将其过滤到 50 个或更少。回到当天,我相信您可以使用“postrank”来做到这一点,但在谷歌收购后现已
我有这样一个重复的xml树- this is a sample xml file yellowred blue greyredblue 如您所见,每个项目可以具有不同数量的颜色标签
我以为我在 Haskell 学习中一帆风顺,直到... 我有一个 [[Int]] tiles = [[1,0,0] ,[0,1,0] ,[0,1,0]
我在使用 Knockout.js 过滤可观察数组时遇到问题 我的js: 包含数据的数组 var docListData = [ { name: "Article Name 1", info:
我在 mongoDB 中有这个架构: var CostSchema = new Schema({ item: String, value: Number }); var Attachm
给定一个数据框“foo”,我如何才能只选择“foo”中的那些行,例如foo$location =“那里”? foo = data.frame(location = c("here", "there",
我是一名优秀的程序员,十分优秀!