Поскольку вы на самом деле не используете FormCollection
, вы можете просто использовать int
(или что бы то ни было ID
на вашей модели) в вашем методе действия:
[HttpPost]
public ActionResult VendorDetails(int vendorId = 0)
{
Vendor selectedVendor = // Load from your data source using vendorId
... // Do the rest of your work
}
В своем HTML-коде переместите @Html.DropDownListFor()
в форму, переименуйте ее в имя аргумента, затем отправьте форму как обычно. Так как дисплей, кажется, не влияет на то, что отправляется на сервер, я бы вытащил это и просто оставил @Html.DropDownListFor()
в форме:
@using (Html.BeginForm("VendorDetails", "VendorLookUp", FormMethod.Post, new { id = "vendorDetailsForm" }))
{
@Html.DropDownList("vendorId", new SelectList(Model.vendorList, "vendorId", "vendorName"))
}
<div class="margin-10-top" >
<table id= "VendorDetail" class="VendorDetail">
........ details of vendor.........
</table>
</div>
<script type='text/javascript'>
$(document).ready(function () {
$('#vendorId').change(function () {
$('#vendorDetailsForm').submit();
});
});
</script>
Редактировать
Взгляните на эту статью о привязке модели MVC, чтобы понять, как vendorId
вводится из отправленной формы. По сути, связыватель будет сопоставлять имена свойств с атрибутом name
(по умолчанию) для вашей модели. В данном случае наша модель просто int
.