Reputation: 1097
The two lines of code below work fine, but I want to combine them. What I mean is: I want to use the @class in the first code line. How can I do that?
<%: Html.TextBoxFor(model => model.Product.Price, String.Format("{0:f}", Model.Product.Price))%>
<%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>
thanks,
Filip
Upvotes: 35
Views: 67999
Reputation: 123
Again, it may be late, but I believe that much better solution is to use jquery.maskedinput plugin (also available as a nuget package).
Why is it better to use a plugin than just an input format? Well, when someone modifies an input, you will loose formating, if you don't use a plugin.
Here you can find a usage and a demo of how it works.
Upvotes: 0
Reputation: 4758
I know I'm way late here but I just found a solution to this issue:
<%: Html.TextBoxFor(model => model.StartDate, new { @class = "datepicker", Value=String.Format("{0:d}", Model.StartDate) })%>
Upvotes: 75
Reputation: 1038720
I am afraid there is no clean way to achieve this. There are a couple of possibilities:
Use an editor template for the Product property:
<%: Html.EditorFor(x => x.Product) %>
and inside this editor template:
<%: Html.TextBox("Price", string.Format("{0:f}", Model.Product.Price), new { @class = "textBox150" }) %>
<%: Html.TextBoxFor(model => model.Product.Name, new { @class = "textBox150" })%>
Write a custom helper that will append the class
Wrap those textboxes in a span
:
<span class="container150">
<%: Html.TextBoxFor(model => model.Product.Price, String.Format("{0:f}", Model.Product.Price))%>
<%: Html.TextBoxFor(model => model.Product.Name)%>
</span>
and then modify your CSS rule:
.container150 input {
// some rule that applies to the textbox
}
Upvotes: 0