MVC :: Include DisplayName With A RegularExpressionAttribute?
Mar 25, 2011
I got custom attributes to work on the server and client, now I want to DRY things up just a little more. How do you override the pattern for RegularExpressionAttribute to include the DisplayName?
If I decorate my model with a regular expression + localized string resource, and the ErrorMessageResourceName does not resolve to something on the object, the following things happen:
The regular expression is ignored altogether from a validation perspectiveNo error messages are raised in the MVC application.I would love it if the framework floated an exception in this instance because exclusion of this rule could have far reaching implications.The following is a modification to the ChangePasswordModel.NewPassword property in the stock MVC 2 RC1 project that exhibits the behavior. Note that while the MyResources does exist in my project, the EMResourceName does not exist on it.
I'm using a model which receives some input from a form and has some validation logic attached via attributes. In one case I'm validating personal names, which should include only letters, apostrophes, spaces and dashes, and be no more than 50 chars long. So I have a model property like:
[Code]....
Everything works fine BUT the RegularExpression attribute: if I add it, I always get a validation error, even when what I type in my form is a valid name (e.g. "Foo"). No matter how I modify the regular expression or what I type, I always get an invalid name error.
(For some reason, I cannot see the regex posted correctly here: it is just ^ followed by the Unicode Letter class and []+ including a Unicode letter class, apostrophe, whitespace and dash, ended by dollar: i.e. start of string - any letter - any of the following: letter, apostrophe, whitespace, dash, 1 or more times; end of string).
I have a simple application roughly following the nerd dinner tutorial. I am trying to get [DisplayName("Fancy Name")] to pretty up the output from <%= Html.LabelFor(model => model.Booking.Name)%> in my create/edit view. I am using a form view controller which looks like this...
In the headers I want to show the DisplayName of the property. The only way I can get it working is as shown above. It really looks ugly and I can't imagine there isn't a better solution. Is there a better solution and how does it look like?
What is the best way to retrieve the display name attribute for an item in your model? I see a lot of people using the LabelFor helper for everything, but a label isn't appropriate if I just want to list the data out. Is there an easy way just get the Name Attribute if I just want to print it out in, say a paragraph?
Why is CultureInfo.DisplayName in [Sami][1] all of a sudden? I use it to display a list of country names. Not a good idea perhaps but it worked until recently and I'm quite sure it was in Swedish (I guess it could have been English.)
i would localize the text of DisplayName attribute: i know that at the moment is not possible (i hope that the next version of mvc will do it automatically) so i tried to search how to do it and i found this link:
LINK TO BLOG'S POST
but i didn't understand how to finish the lookup function.
I have a Car class that I'm trying to display in an MVC 3 view using the WebGrid helper. Below are the Car and it's metadata class.
Car class:
[MetadataType(typeof(CarMetadata))] public partial class Car { // car implementation } Car metadata class: public class CarMetadata { [DisplayName("Car Name")] [StringLength(100, ErrorMessageResourceType = typeof(ValidationText), ErrorMessageResourceName="CarNameDescriptionLength")] [Required] public string CarName { get; set; } }
View contents:
@model List<Car> ... var grid = new WebGrid(Model, canPage: true, rowsPerPage: 10); grid.Pager(WebGridPagerModes.NextPrevious); @grid.GetHtml( htmlAttributes: new { id = "grid" }, columns: grid.Columns( grid.Column("CarName", ?????) ));
GOAL: I'd like to figure out how to use the DisplayName data annotation as the column header text in the WebGrid (?????). Does anyone know how this is accomplished?
I like the idea of using Include files so that I can create various versions of individual parts of a site and decide in code which to display. I used:
<%Response.WriteFile("contentcontent.aspx")%>
to include a content.aspx file within my default.aspx page.
I would like to include a Left.aspx, Main.aspx and Right.aspx file inside the content.aspx file. I tried using the reponse.writefile function but noticed when I debug the website that the text "reponse.writefile..." displays instead of the code contained within the referenced file(s).
I'm generating the rdlc at runtime and I'm using LoadReportDefinition(memorystream) to provide the definition to report viewer. It works fine but when I export it to pdf or excel, the file extension comes in as .xls[1] or .pdf[1].
I have tried giving the DisplayName property but it doesn't work.
http://localhost/{url}/{options}/{hash} But since the url will be very strange with a url inside a url, how would I encode that?
I was thinking of encoding it in hex, since url encoding in .net gave me some strange result that didn't work inside a url. But I don't really know what would be the best way here.
I want to keep the structure of the url, not including any querystring.
I use the code bellow to dynamically include a CSS file:
HtmlHead head = (HtmlHead)Page.Header; HtmlLink link = new HtmlLink(); link.Attributes.Add("href", Page.ResolveClientUrl("~/App_Themes/Default/StyleSheet.css")); link.Attributes.Add("type", "text/css"); link.Attributes.Add("rel", "stylesheet"); head.Controls.Add(link);
The problem is: I want to do it only once, and only if it isn't alrealy included in the page.
How do I verify if it is already included?
Edit:
Answers telling me to include in page load using !IsPostBack won't solve my problem, as this code will be inside a Web User Control and my page may have a lot of the same user control.
For example, I use the code below to do it with javascript:
if (!Page.ClientScript.IsClientScriptIncludeRegistered("jsScript")) { Page.ClientScript.RegisterClientScriptInclude("jsScript", ResolveUrl("~/Utilities/myScript.js")); }
Possible Duplicate: Include javascript file inside javascript file?
Including a reference to another .js that your current .js file code is reliant on instead of having to add 2 includes in every page to ensure that both those files are there? I assume the answer is no...as I have not found any info on it on the net so far.
Is the classic way of using include files still the best practice in ASP.NET. IS there a better way in ASP.NET to simulate include files? IF not can someone please provide an example of the .NET way?
I'm using DotNetNuke 4.8.x and want to utilize jQuery. Could anyone possibly suggest me on what is the best way to integrate jQuery into DNN? I won't be able to upgrade DNN version to 5 which has built-in support for jQuery.