2012-11-08 181 views
0

我有这样的动作:名称属性

[HttpPost] 
public ActionResult Test(Test test) 
{ 
    ... 
} 

有了这个类:

public class Test 
{ 
    public string txtTest { get; set; } 
} 

HTML表单已在文本字段名为txtTest,我可以顺利在上面调用我的动作。什么属性名,让我做到这一点:

public class Test 
{ 
    [SomeAttribute(Name = "txtTest")] 
    public string MyTest { get; set; } 
} 
+1

你能详细一些吗? –

+0

目前我被迫将我的C#类的变量的名称与表单字段的名称相匹配。我无法更改表单字段的名称。 –

+0

如果更改表单字段的名称,它将不会正确映射回您的类。如果你想做自定义字段,你还必须编写一个自定义的ModelBinder。这个[XY问题]的SMELLS(http://meta.stackexchange.com/a/66378/171858),因为你有一些解决方案,但是你没有告诉我们它解决了什么问题。 –

回答

2

使用视图模型,不使用它被用于别的班。
创建ViewModel,仅限于此特定视图。

其中一个的好处是你不需要改变现有类的属性名称。

您可以使用高度用于MVC应用程序的automapper从ViewModel映射到实体。

良好的阅读资源可以是found here

+0

也许我误解了你 - 我根本不叫View()。我只是试图接收表单数据。 –

+0

@ user961969,因此在POST操作中使用viewmodel获取数据。您可以使用AutoMapper从DTO映射到CTO。 – gdoron