Asp.net mvc 在ASP.NET MVC中编写表单的最佳方式是什么?

Asp.net mvc 在ASP.NET MVC中编写表单的最佳方式是什么?,asp.net-mvc,forms,Asp.net Mvc,Forms,在ASP.NET MVC中编写表单以提交某些数据的最佳方式是什么?这是这里展示的吗?有更好的方法吗?也许用更少的字符串 我不太喜欢代码中的字符串,因为它不可能重构。一个好方法是使用Linq表达式。如果将模型作为ViewData传递,则可以使用以下语句: <%= ShowDropDownBox(viewData => viewData.Name); %> ... public static string ShowDropDownList<T>(this HtmlHe

在ASP.NET MVC中编写表单以提交某些数据的最佳方式是什么?这是这里展示的吗?有更好的方法吗?也许用更少的字符串


我不太喜欢代码中的字符串,因为它不可能重构。一个好方法是使用Linq表达式。如果将模型作为ViewData传递,则可以使用以下语句:

<%= ShowDropDownBox(viewData => viewData.Name); %>
...

public static string ShowDropDownList<T>(this HtmlHelper html, Expression<Action<T>> property)
{
    var body = action.Body as MethodCallExpression;
    if (body == null)
        throw new InvalidOperationException("Expression must be a method call.");
    if (body.Object != action.Parameters[0])
        throw new InvalidOperationException("Method call must target lambda argument.");
    string propertyName = body.Method.Name;
    string typeName = typeof(T).Name;

    // now you can call the original method
    html.Select(propertyName, ... );
}
viewData.Name);%%>
...
公共静态字符串ShowDropDownList(此HtmlHelper html,表达式属性)
{
var body=action.body作为MethodCallExpression;
if(body==null)
抛出新的InvalidOperationException(“表达式必须是方法调用”);
if(body.Object!=action.Parameters[0])
抛出新的InvalidOperationException(“方法调用必须以lambda参数为目标。”);
字符串propertyName=body.Method.Name;
字符串typeName=typeof(T).Name;
//现在可以调用原始方法
选择(propertyName,…);
}
我知道原来的解决方案运行得更快,但我认为这个解决方案更干净


希望这有帮助

这主要是一个偏好的问题,使用字符串可以提高性能,但对于大多数web应用来说,这并不重要。我们也可以通过使用T4MVC摆脱Action=“Update”魔术字符串