エディタ用のHTMLヘルパを作成しています。このアイデアは、AutoGenerateFieldという属性を持つモデルからプロパティを取得し、各行に(属性からの)フィールドの名前と、フィールドの実際の値を含むTextBoxまたはCheckBoxを含むテーブルを構築することです。HTMLHelper、 "Expression <Func <TModel、TValue >> expression"の型のパラメータを生成します
HTMLHelperに問題があります。私はヘルパーではなく1つの値にモデル全体を送っているので、私は彼らがそのような
"Expression<Func<TModel, TValue>> expression".
などのパラメータを、必要として、私は反射を利用していると私が代わりにプロパティを送信しようとした、などTextBoxForなどのメソッドを使用することはできませんそれでもVisualStudioはこれを誤った使用とみなします。以下は
は私のHtmlHelperのための方法を簡略化されている:public static MvcHtmlString GenerateEditor<TModel>(this HtmlHelper<TModel> htmlHelper)
{
var model = htmlHelper.ViewData.Model;
var result = String.Empty;
//generating container, etc ...
foreach (var property in model.GetType().GetProperties())
{
var attr = property.GetCustomAttributes(typeof (DisplayAttribute), true).FirstOrDefault();
if (attr == null) continue;
var autoGenerate = ((DisplayAttribute)attr).AutoGenerateField;
if(autoGenerate)
{
//here I'm building the html string
//My problem is in the line below:
var r = htmlHelper.TextBoxFor(property);
}
}
return MvcHtmlString.Create(result);
}
任意のアイデア?
ありがとうございます!それはうまくいった! – Anelook
@Annelookようこそ) – gideon