我将引用Darin's answer 并在此处添加您需要的内容,只是因为您不需要完全他提供的内容。但是,jQuery 设置正是您要寻找的。p>
添加一个包含客户属性和狗 ID 的视图模型。
public class CustomerDogCreateViewModel
{
public string customerFirstName { get; set; }
public string customerLastName { get; set; }
// ... more properties from your ViewBag here
public int dogID { get; set; }
public CustomerDogCreateViewModel() { }
}
您只需要一个返回 JSON 的控制器操作,用于部分回发和填充“Dogs”下拉列表。
public ActionResult Dogs(int customerID)
{
// this is pseudo-LINQ, if you need help with your query,
// we will need to know a little more about your data objects
var dogs = // get dogs from your db
select new
{
Id = dog.ID,
Text = "Fido"
};
return Json(dogs, JsonRequestBehavior.AllowGet);
}
对于您的额外客户数据,将这些值作为隐藏输入添加到您的创建表单中
<form action="/YourController/Create" method="POST" >
<!-- select lists -->
<input type="hidden" name="customerFirstName" value="@ViewBag.customerFirstName" />
<input type="hidden" name="customerLastName" value="@ViewBag.customerLastName" />
<input type="submit" value="Create" />
</form>
您也可以按照 Darin 的回复将其连接起来。有一件事要提;在我的回答中,只有 Dog 的 ID 属性会发布,所以一旦请求是服务器端的,您需要检索该对象并保存到您的数据库,但是您的业务逻辑是有意义的。
[HttpPost]
public ActionResult Create(CustomerDogCreateViewModel vm)
{
var dog = YourDb.Dogs.Where(d => d.ID == vm.dogID).SingleOrDefault();
// you didn't identify your data objects, so persist these to your db as usual.
return View("CreateSuccess");
}