我有一个模型车辆实体的简单模型。 它有以下属性: 模型 使 颜色 RegistrationPlate
在创建视图上,我希望用户能够使用注册板自动填充模型/制作/颜色信息来执行服务器查找。
因此我正在尝试创建一个像这样的动作链接:
@Html.ActionLink("Look up registration", "RegLookup", "Vehicle", Model.Registration)
其中RegLookup是车辆控制器中的get ActionResult方法,该方法消失并根据传递给它的注册字段查找模型/品牌/颜色信息。从单独的数据库中检索Make / Model / Color信息。
但是目前在渲染视图时 - 甚至在进入动作链接之前 - 会抛出异常,表明模型是空的。
我想要传递的内容实际上是代表注册的文本框中的值:
@Html.EditorFor(model => model.Registration)
如何通过此值?
答案 0 :(得分:3)
在您的CreateView中,通常您的模型属性应该是空的,除了一些预先准备好的值,如下拉列表。您应该使用的是使用jQuery ajax对action方法进行异步调用,该方法根据注册板返回相关数据并填写表单
您可以保留此行动链接
@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"
}
答案 1 :(得分:0)
您需要传递查询字符串中的属性:
@Html.ActionLink(
"Look up registration",
"RegLookup",
"Vehicle",
new {
registration = Model.Registration
}
)
然后控制器操作可以使用此registration
参数:
public ActionResult RegLookup(string registration)
{
...
}
答案 2 :(得分:0)
您需要执行普通的POST或AJAX,以将板号发送到服务器。在您的视图中,在设计时您没有用户输入的值。