2013-04-11 47 views
0

控制器操作对于应用我的工作,我已经得到了一个查看下面的剃刀代码我的工作:参数没有被正确地传递到从视图

@Html.InputFor(m => m.Property1); // A date 
@Html.InputFor(m => m.Property2); // Some other date 
@Html.InputFor(m => m.SomeOtherProperty); // Something else. 
<a href='#' id='some-button'>Button Text Here</a> 

<!-- SNIP: Extra code that dosen't matter --> 

<script> 
    var $someButton = $('#some-button'); 

    $(document).ready(function() { 
    $someButton.click(function (e) { 
     e.preventDefault(); 
     window.open('@Url.Action("Foo", "Home", new {p1 = Model.Property1, p2 = Model.Property2, pX = Model.SomeOtherProperty})', '_blank'); 
    }); 
    }); 
</script> 

...在评论,我检查了呈现的HTML。该值来与价值观,符合市场预期...

<input name="Property1" data-val="true" data-val-required="(Required)" type="text" value="1/1/2013"> 
<input name="Property2" data-val="true" data-val-required="(Required)" type="text" value="4/11/2013"> 
<input name="SomeOtherProperty" data-val="true" data-val-required="(Required)" type="text" value="42"> 
<a href='#' id='some-button'>Button Text Here</a> 

<script> 
    var $someButton = $('#some-button'); 

    $(document).ready(function() { 
    $someButton.click(function (e) { 
     e.preventDefault(); 
     window.open('http://localhost:xxxx/Home/Foo?p1=1%2F1%2F2013&amp;p2=4%2F11%2F2013&amp;pX=42', '_blank'); 
    }); 
    }); 
</script> 

...并在服务器端...

public ActionResult Foo(string p1, string p2, string pX) 
{ 
    var workModel = new FooWorkModel 
    { 
    Property1 = p1, 
    Property2 = p2, 
    SomeOtherProperty = pX 
    }; 

    // Do something with this model, dosen't really matter from here, though. 
    return new FileContentResult(results, "application/some-mime-type"); 
} 

我注意到,只有第一个参数(p1)越来越来自前端的价值;我的所有其他参数正在传递空值!

问题:为某些值分配给这些其他字段时,ActionResult为什么会传递空值?或者,一个免费的问题:为什么只有第一个参数成功通过它的值,而其他一切都失败了?

+1

你呈现的HTML看起来像什么?当页面加载时,Property2和SomeOtherProperty是否设置为空值? – 2013-04-11 19:57:25

+0

属性1,2和SomeOtherProperty全部填充。值得注意的是,我正在使用的过程要求输入信息,并点击搜索链接。这提交了一个模型的副本(填充信息),作为搜索的标准。该信息被填充到子模型列表中,并且具有> 0的计数的列表允许我编码的链接甚至被呈现。 – 2013-04-11 20:01:44

+3

Andrew,window.open('@ ​​Url.Action(“Foo”,“Home”,new {p1 = Model.Property1,p2 = Model.Property2,pX = Model.SomeOtherProperty})','_blank');这行代码在HTML中产生了什么?当js运行时,您粘贴的输入值不会被使用。 – 2013-04-11 20:23:23

回答