Asp.net mvc 如何通过ActionLink传递模型值
我有一个简单的模型,它模拟了一个车辆实体。 它具有以下属性: 模型 制作 颜色 登记牌 在“创建”视图中,我希望用户能够使用登记牌执行服务器查找,以自动填充型号/品牌/颜色信息 因此,我正试图创建一个这样的动作链接:Asp.net mvc 如何通过ActionLink传递模型值,asp.net-mvc,Asp.net Mvc,我有一个简单的模型,它模拟了一个车辆实体。 它具有以下属性: 模型 制作 颜色 登记牌 在“创建”视图中,我希望用户能够使用登记牌执行服务器查找,以自动填充型号/品牌/颜色信息 因此,我正试图创建一个这样的动作链接: @Html.ActionLink("Look up registration", "RegLookup", "Vehicle", Model.Registration) 其中,RegLookup是车辆控制器中的get-ActionResult方法,它会根据传递给它的注册字段查找车
@Html.ActionLink("Look up registration", "RegLookup", "Vehicle", Model.Registration)
其中,RegLookup是车辆控制器中的get-ActionResult方法,它会根据传递给它的注册字段查找车型/品牌/颜色信息。品牌/型号/颜色信息从单独的数据库中检索
然而,目前在呈现视图时——甚至在到达操作链接之前——会抛出一个异常,指示模型为Null
我想要传递的实际上是表示注册的文本框中的值:
@Html.EditorFor(model => model.Registration)
如何传递该值?在您的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"
}
您需要在查询字符串中传递属性:
@Html.ActionLink(
"Look up registration",
"RegLookup",
"Vehicle",
new {
registration = Model.Registration
}
)
然后控制器操作可以执行此注册
参数:
public ActionResult RegLookup(string registration)
{
...
}
您需要执行一个普通的POST或AJAX来将车牌号发送到服务器。在您看来,在设计时,您没有用户输入的值。谢谢Darin,我仍然在模型对象上得到NullReferenceException。您在谈论什么
Model
对象?您的RegLookup
控制器操作在做什么?是否将模型传递给视图?如果是,您是否确保此模型不为null?永远不会调用RegLookup控制器操作。首次呈现视图时会发生NullReferenceException。哦,那么您必须修复呈现此视图的控制器操作。确保它向其传递的视图模型不为null。我刚刚尝试将一辆空车传递到视图,但是注册没有绑定到注册编辑器文本框。当我单击操作链接时,传递的注册字符串为空。我的理解是,我不能通过操作链接发布帖子?我已经使用了提交按钮来提交创建。所以我想我需要使用AJAX。对于这么简单的任务来说,这似乎很麻烦。@ChrisNevill,没那么麻烦。。。就用Shyju的答案。。。它是相当完整的。。。只要让你的控制器返回一个Json对象,你就完成了。谢谢Shyju-我会给它一个goErg,我有点卡住了。我该如何给“注册车牌”的编辑起名字?@ChrisNevill:我不明白你的意思!我建议你不要在评论部分提出新问题。请把它作为一个新的问题和相关的细节贴出来。虽然花了一段时间,但我终于让它起作用了。谢谢你的帮助:D