我有一個實體,其變量集名爲ExtendedProperty
,它們有一個鍵和一個值。在ASP中獲取具有未知數量變量的帖子數據MVC
在我的HTML Razor視圖,我有這樣的:
如何訪問我的控制器上的這個數據,一旦用戶填寫它?有沒有辦法做到這一點,以便我可以使用模型綁定而不是手動html?
編輯=請注意,我仍在使用模型,並且在表單中還有其他東西使用像@Html.EditFor(m => m.prop)
之類的東西。但我找不到一種方法來整合這些可變屬性。
謝謝。
我有一個實體,其變量集名爲ExtendedProperty
,它們有一個鍵和一個值。在ASP中獲取具有未知數量變量的帖子數據MVC
在我的HTML Razor視圖,我有這樣的:
如何訪問我的控制器上的這個數據,一旦用戶填寫它?有沒有辦法做到這一點,以便我可以使用模型綁定而不是手動html?
編輯=請注意,我仍在使用模型,並且在表單中還有其他東西使用像@Html.EditFor(m => m.prop)
之類的東西。但我找不到一種方法來整合這些可變屬性。
謝謝。
讓我們假設你有以下Model
(視圖模型,我喜歡):
public class ExtendedProperties
{
public string Name { get; set; }
public string Value { get; set; }
}
public class MyModel
{
public ExtendedProperties[] Properties { get; set; }
public string Name { get; set; }
public int Id { get; set; }
}
您可以使用類似這樣的標記模式綁定到一個視圖:
@using (Html.BeginForm("YourAction", "YourController", FormMethod.Post))
{
<input type="text" name="Name" />
<input type="number" name="Id" />
<input type="text" name="Properties[0].Name" />
<input type="text" name="Properties[0].Value" />
...
<input type="text" name="Properties[n].Name" />
<input type="text" name="Properties[n].Value" />
}
最後,您action:
[HttpPost]
public ActionResult YourAction(MyModel model)
{
//simply retrieve model.Properties[0]
//...
}
這工作,謝謝! – elite5472
@ elite5472不錯,謝謝你的反饋。 –
您是否嘗試過使用傳遞給控制器方法的FormCollection對象?
[HttpPost]
public ActionResult Index(FormCollection formCollection)
{
foreach (string extendedProperty in formCollection)
{
if (extendedProperty.Contains("Property-"))
{
string extendedPropertyValue = formCollection[extendedProperty];
}
}
...
}
我會嘗試遍歷該集合中的項目。
如果您將輸入名稱爲Properties [0 ] ....屬性[n],模型聯編程序會將其轉換爲名爲Properties的模型上的IEnumerable屬性 – cadrell0
如何將此與我的模型類集成? – elite5472
@ elite5472請看看我在http://stackoverflow.com/questions/17450772/asp-net-mvc4-dynamic-form-generation/17451048#17451048的回答。我相信這是同樣的問題。 –