我有一个简单的模型,用于对车辆实体进行建模。 它有以下属性: 模型 制作 颜色 登记牌
在创建 View 时,我希望用户能够使用注册牌执行服务器查找,以自动填充型号/品牌/颜色信息。
因此,我尝试创建一个如下所示的操作链接:
@Html.ActionLink("Look up registration", "RegLookup", "Vehicle", Model.Registration)
其中 RegLookup 是车辆 Controller 中的 get ActionResult 方法,该方法会根据传递给它的注册字段查找型号/品牌/颜色信息。品牌/型号/颜色信息是从单独的数据库中检索的。
但是目前在渲染 View 时 - 甚至在到达操作链接之前 - 会引发异常,表明模型为空。
我想要传递的实际上是代表注册的文本框中的值:
@Html.EditorFor(model => model.Registration)
如何传递这个值?
最佳答案
在您的 CreateView 中,通常您的模型属性大部分应该为空,除了一些预先填充的值(例如 dropdowns )。您应该使用的是使用 jQuery ajax 对操作方法进行异步调用,该方法根据车牌返回相关数据并将其填充到表单中
您可以像这样保留操作链接
@Html.ActionLink("Look up registration", "RegLookup", "Vehicle",
new {@id="check"},null)
并附加一个javascript函数到它的click事件来进行ajax调用
$(function(){
$("#check").click(function(e){
e.preventDefault();
var item=$(this);
var regPlateVal=$("#RegistrationPlate").val();
$.getJSON(item.attr("href")+"?registration="+regPlateVal,function(data){
if(data.Status=="success")
{
$("#Color").val(data.Color);
$("#Model").val(data.Model);
}
});
});
});
假设您的 RegLookUp
操作方法接受一个参数(名称为 registration
)并返回 JSON
格式的数据,如下所示
{
"Status": "success",
"Color": "Red",
"Model": "2011"
}
关于asp.net-mvc - 如何通过ActionLink传递模型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956831/