双输入MVC扩展
问题描述:
在这里,我试图让与双输入框双输入MVC扩展
返回模型的属性是空的扩展, 他们没有正确绑定或这里还有另外一个问题, 请帮我写这个扩展名并利用它。 我需要在我的代码中使用它数千次。
public static class DoubleBoxHelper
{
public static MvcHtmlString DoubleBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
//int id,
Expression<Func<TModel, TProperty>> expression)
{
var builder = new StringBuilder();
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var model = metadata.Model as DoubleNumber;
var name = ExpressionHelper.GetExpressionText(expression);
var fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
var fieldId = TagBuilder.CreateSanitizedId(fullName);
// 1st TextBox
var tagInputLeft = new TagBuilder("input");
tagInputLeft.Attributes.Add("name", fullName);
tagInputLeft.Attributes.Add("id", fieldId + 1);
tagInputLeft.Attributes.Add("type", "text");
tagInputLeft.Attributes.Add("value", model.Num1 == null ? "" : model.Num1.ToString());
// 2nd TextBox
var tagInputRight = new TagBuilder("input");
tagInputRight.Attributes.Add("name", fullName);
tagInputRight.Attributes.Add("id", fieldId + 2);
tagInputRight.Attributes.Add("type", "text");
tagInputRight.Attributes.Add("value", model.Num2 == null ? "" : model.Num2.ToString());
builder.Append(tagInputLeft.ToString(TagRenderMode.SelfClosing));
builder.Append(tagInputLeft.ToString(TagRenderMode.SelfClosing));
return new MvcHtmlString(builder.ToString());
}
}
Model类
public class DoubleNumber
{
public int Num1 { get; set; } // tried strings but again they are null
public int Num2 { get; set; }
}
,这里是我们需要输入的数字控制器 - 后动作
[HttpPost]
public ActionResult Index(DoubleNumber g)
{
int iNum1 = g.Num1; // int or string doesn't matter, it couldn't get the entered(modified) model
int iNum2 = g.Num2;
var vm = ViewModelOf(g);
return View(vm);
}
答
你可能有一个更容易的时间只用编辑模板:
浏览\共享\ EditorTemplates \ DoubleNumber.cshtml
@model DoubleNumber
@Html.TextBoxFor(m => m.Num1)
@Html.TextBoxFor(m => m.Num2)
然后,在你的看法:
@Html.EditorForModel()
或者,如果你有DoubleNumber
类型的属性上的视图模型:
@Html.EditorFor(m => m.MyDoubleNumberProperty)
+0
这没什么,我认为+1,它可能类似于PartialView方法,但是如果你正在制作一个可重用的库,并且你正在尝试将一些类似的逻辑作为控件,那么我该如何找到我错过了这里,请考虑另一种方式,谢谢 – LastBye
如果任何人还可以提及如何使用类似这样的东西:“htmlHelper.TextBoxFor(表达式”在我的字符串生成器中,我可以通过我的目标我的模型的所需属性这可能是一个很大的帮助。 – LastBye