2

我有一个简单的模型来模拟车辆实体。它具有属性:模型制作颜色注册板

在创建视图上,我希望用户能够使用注册板执行服务器查找以自动填写型号/品牌/颜色信息。

因此,我正在尝试创建一个像这样的操作链接:

@Html.ActionLink("Look up registration", "RegLookup", "Vehicle", Model.Registration)

RegLookup 是车辆控制器中的一个 get ActionResult 方法,该方法会根据传递给它的注册字段查找模型/品牌/颜色信息。品牌/型号/颜色信息是从单独的数据库中检索的。

然而,目前在渲染视图时——甚至在到达操作链接之前——抛出一个异常,表明模型为空。

我想要传递的实际上是代表注册的文本框中的值:

@Html.EditorFor(model => model.Registration)

我如何传递这个值?

4

3 回答 3

3

在您的 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"
}
于 2012-08-14T16:45:27.480 回答
0

您需要在查询字符串中传递属性:

@Html.ActionLink(
    "Look up registration", 
    "RegLookup", 
    "Vehicle", 
    new {
        registration = Model.Registration
    }
)

然后控制器动作可以采用这个registration参数:

public ActionResult RegLookup(string registration)
{
    ...
}
于 2012-08-14T16:45:37.870 回答
0

你需要做一个普通的 POST 或 AJAX 一个来将车牌号发送到服务器。在您看来,在设计时您没有用户输入的值。

于 2012-08-14T16:51:58.113 回答