Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何通过ActionLink传递模型值_Asp.net Mvc - Fatal编程技术网

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