我正在使用MVC,我希望有两个下拉列表,其中一个值依赖于另一个。另外,基于两个下拉列表的组合保存了相应的ID。
我有一个由
组成的代码表我想将下拉列表作为制造商列表然后基于选择我想要下拉两个作为制造商的任何型号。然后,当我保存记录时,这些下拉列表用于我想记录分配给该组合的ManufacturerModelID。这可能吗?
答案 0 :(得分:0)
如果我理解得很好,您希望将MVC模型应用到您的应用程序中。
如果是,则不存在"如果",您可以实施任何内容。您只需要将模型与视图和控制器分开。
在你的情况下,我会选择"面向对象" JavaScript的。将对象中的模型分开有助于理解MVC本身。 在名称空间下编程所有内容,例如" MANUFACTUREAPP"也会有所帮助。
1)对于型号
a)你需要有一个物品"制造商"像this.id,this.description,this.models = []这样的字段。然后你需要设置器,吸气剂和你的魔法功能,这将推动它。模型它拥有的模型。所以最后只有一个函数,比如getManufacturer(),它将为你提供一个充满了这个制造商所拥有的东西的物体。
b)你需要一个" ManufacturerModel"使用this.model,this.modelDescription,this.manufacturerID = [],setter,getters,init和所有时髦功能。
2)对于视图 a)你需要你的"查看"具有以下功能的对象:
onManufacturerClick = function(){
manufacturersModels = MANUFACTUREAPP.manufacturers.getMeWhatIwant(howIwantIt);
}
所以现在你可以为你的应用程序支持MVC架构感到自豪 3)对于控制器,只需遵循相同的概念。
在你的主体中,你想在init函数中创建你的对象,如:
init = function(){
MANUFACTUREAPP.manufacturers = new MANUFACTUREAPP.init();
}
两个友好的建议。从理论上研究MVC,因为如果你没有100%理解它,它可能会变得棘手。如果你想节省时间和能量,我最好的建议就是......拿一支笔画你的模特!
修改强>
刚注意到asp.net标签..无论如何,我要离开这里。我不熟悉asp.net,但我猜理论应该是一样的..
答案 1 :(得分:0)
你可以使用jQuery和ajax。
假设你的剃刀视图呈现这样的标记。
<select name="Manufacturer" id="Manufacturer">
<option value="1">Aaaaa</option>
<option value="2">Bbbbb</option>
<option value="3">Ccccc</option>
</select>
<select name="Model" id="Model">
</select>
现在在您的页面中有这个javascript,它会侦听第一个select元素的change事件并获取所选选项的值,并使用ajax将其发送到您的服务器。让您的服务器操作方法返回模型属于制造商ID。
$(function(){
var urlForModesl = "/Manufacturer/Models";
$("#Manufacturer").change(function(){
var manufacturerId= $(this).val();
$.getJSON(urlForModesl,function(data){
var modelsHtml="";
$.each(data,function(a,b){
modelsHtml+="<option value='"+b.Id+"'>"+b.Name+"</option>";
});
$("#Model").html(modelsHtml);
});
});
});
假设您的Models操作方法返回一个具有JSON格式的Id和Name属性的对象列表。
public ActionResult Models(int id)
{
var list= db.ModelManufactors.Where(s=>s.ManufacturerId==id)
.AsEnumerable()
.Select(s=> new { Id=s.ManufacturerModelId, Name=s.Name}).ToList();
return Json(list,JsonRequestBehaviour.AllowGet);
}