asp.net-mvc - 如何通过ActionLink传递模型值

标签 asp.net-mvc

我有一个简单的模型,用于对车辆实体进行建模。 它有以下属性: 模型 制作 颜色 登记牌

在创建 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/

相关文章:

c# - ASP.Net Identity Identity.IsAuthenticated 保持为真,即使在删除用户之后

javascript - 获取 MVC 模型数据并将其传递到 AngularJS Controller

javascript - MVC Jquery文件上传Request.Files始终为空

c# - 在页面上进行任何事件之前,如何检查 MVC 中的 session 变量是否存在?

javascript - 使用 jquery 验证忽略字段文件

c# - 在 MVC(Razor) 中使用 Jquery 验证文本框中的数字

C# MVC 基于 session 的简单购物车

javascript - 将错误从 Controller 显示到 Bootstrap Alert

html - 将 HTML table 元素放置在 img 元素之上

javascript - 如何使用在 Asp.net C# 中创建的 javascript 读取 cookie 值