私が取り組んでいるアプリの場合、私が取り組んでいるビューの次の Razor コードがあります。
@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&p2=4%2F11%2F2013&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
最初のパラメーター ( ) のみがフロント エンドから値を取得していることに気付きました。他のすべてのパラメーターに null 値が渡されています!
質問: これらの他のフィールドに何らかの値が割り当てられている場合、ActionResult に null 値が渡されるのはなぜですか? または、補完的な質問: 最初のパラメーターのみが正常に値を渡し、他のすべてが失敗するのはなぜですか?