2013-04-11 135 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

回答

相關問題