I would like someone to explain how I can pass a drop down list from the presentation layer to the controller using the Model View Controller Design Pattern from Microsoft in order to bind enum values to it?
I am populating a page with controls reading properties of a class using reflection. If the property type is 'String' I will add a text-box. If the property type is enum I am adding a dropdownlist. Now I have to populate the dropdown options with enums. How can this be done?
Both the enum definition class(Assignment) and the class(classOne) using which I am populating the page with controls are in the same Namespace(MySolution.Data). While looping through classOne properties when the property name is 'SkillLevel' I will have to go to assignment class get the members of enum SkillLevelEnum and populate the dropdown.
Same needs to be done for other dropdowns also.
My Code:
namespace MySolution.Data { public class classOne : MyAdapter { private string _Model;
and this ViewData contains the information of a type of List<SelectListItem>,which can be used to generate a dropdownlist in the view later on. BUT, now i want to write a function in my controller to generate List<SelectListItem> based on different input enum, what like want to do is like this:
I am getting the same error (as this post: http://forums.asp.net/p/1346731/4020966.aspx) as expected class,delegate,enum,interface or struct and also type or namespace definition or end of file expected.Below is the code:
As per this how-to, I've successfully configured IIS on my XP-SP3 dev box for SQL Server 2008 Express to save ASP.NET session state information. I'm just using SQL Server because otherwise on every recompile, I was losing the session state which was obnoxious (having to re-login). But, I'm facing an annoying issue in that every time I restart SQL there's this error, and sometimes one or two other very similar friends:The SELECT permission was denied on the object 'ASPStateTempSessions',database 'tempdb', schema 'dbo'.To fix the error, I just open Management Studio and edit the User Mapping for the login/dbo I'm using on the ASPState db, and re-add tempdb to that user with all but deny permissions. Apparently, once the right permissions are there, ASP.NET is able to automatically create the tables it uses. It just can't run that CreateTempTables sproc until the right security is there.HE QUESTION...Is there a way to not have to re-do this on every restart of the SQL Server?I don't really care right now about keeping the temp data across restarts, but I would like to not have to go through this manual step just to get my web app working on localhost, which uses session state variables throughout. I suppose one could resort to some kind of stored procedure within SQL Server to accomplish the task for this machine when the service starts, to not have to do it manually. I'd accept such an answer as a quick fix. But, I'm also assuming there's a better recommended configuration or something. Not seeing an answer to this on the how-to guide or elsewhere here on StackOverflow.
I have implemented customised registratio page by extending the membership provider using profile provider.I successfully registered the user .Now i want to validate the fields of registration page.Built-in Registration page has builtin validation messages.
Bu in my coding i am not passing model to the registration action, instead i am passing properties.So if i Use If(ModelState.IsValid) it is always gives true even i am not filling any fields .but after it throws an exception but not displaying error messages in the page.tell me what i have to do.How i am getting my validation messages.
I saw Account Models class in that for register Model built in validation conditions are there.So i am also writing like that for my properties.
I have created a custom validation attribute for a class. The validation is actually against one property of the class, but since it needs to be compared to another property of the class at runtime, I had to pull in everything from the input form, perform the validation and output the errors. This being the case, I manually added a ModelError to ModelState if the ModelStats.IsValid returned false. I have another thread that goes into this, as I still haven't been able to make the client-side validation work for the custom validation (built-in validation runs client-side without a problem).
Here's the issue: I want to use the Post/Redirect/Get pattern to avoid issues where users refresh their page and cause another post of the form data. If I complete my Controller action and return a View after assigning an error with ModelState.AddModelError, I get the user feedback with the red input field and error message shown. However, just returning a View like this makes you vulnerable to the repeated posts issue. I want to use RedirectToAction to perform a get and avoid this problem, but when I do that I no longer have the ModelState error feedback on my rendered View. Here're the calls I'm making:
[Code]....
I'd like to be able to redirect to a get action and retain the ModelState.
I want to perform some simple form validation in my controller.
Here's an excerpt from the controller action:
[code]....
It appears that must use a string as the error's key. Is there a way i can generate the corect key from the model, or should I just check for what input name Html.PasswordFor(x => x.NewPassword) returns?
I created a Model to do registration on my Website, and add some validations to it. When the user inputs a data, the data will be checked for validity using ModelState.IsValid. But when I input a correct data, it always be invalid. So I decided to debug my program and found that there are an extra key in my ModelState.
For my model, I have UserName, Email, Password, ConfirmPassword, SecretQuestion and SecretAnswer (6 elements)But when I debug, in ModelState, I found 7 elements, they are UserName, Email, Password, ConfirmPassword, SecretQuestion SecretAnswer and the last one is "".I don't know why there is an extra "" in my ModelState, and I checked that it was the source of my error.
To return a partial view and a form through JSON. It works as it should, but as soon as I get modelstate errors my ValidationSummary does not show. The JSON only return the default form but it does not highlight the validation errors or show the validation summary.
Am I missing something?
This is how I call the RenderPartialToString:
string partialView = RenderPartialToString(this.ControllerContext, "~/Areas/User/Views/Account/ChangeAccountDetails.ascx", new ViewDataDictionary(avd), new TempDataDictionary());
I am creating a custom 'control' which is simply made of two html inputs [type=text] but can't figure out how the validation will work on the view end.
I want to treat these 2 inner controls as asingle control so when a error is added to modelstate both of these inputs are highlighted in the view and a single validation message is shown.
I am working in an ASP.NET MVC Application. I have a view model as follows:
[code]....
From UI Perspective user can enter date as mmddyyyy. And when user enters in such format 01012001, my ModelState.IsValid code piece in controller returns false. When I did a quick watch in ModelState, I see an error for the propery "SampleDate", saying "The Value 01012001 is not valid for SampleDate".
In my modelbinder, during the OnModelUpdated event I tried to format the value 01012001 to 01/01/2001 and assigned it back to SampleInterestViewModel.SampleDate thinking that ModelState.IsValid might return true without that error. But still ModelState.IsValid is false and I when I looked in to the ModelState dictionary, this particular property still has that errors in its collection.
Lastly I tried to format 01012001 and update the value 01/01/2001 directly to the Property SampleDate in the ModelState dictionary. But still ModelState.IsValid is false showing the same error for the SampleDate property. Can't figure out why ModelState.IsValid works and how and when it gets set to false.
If the User enter 01012001 in the UI, I still need to format it in the modelbinder to 01/01/2001 and make sure that ModelState.IsValid it true so that the rest of my controller code can work as expected. In the UI I am doing an AjaxSubmit to post the sampleDate value.
Is it necessary to do a ModelState.IsValid check at the top of every action? It seems that it is since the default model binder could make it invalid depending on the action parameters.
I've written a View (form) that has a section with two radio buttons and a blank <DIV> block that will dynamically be updated. When one radio button is clicked, a <DIV> on the page is updated with fields specific to that radio button option. When the other radio button is clicked, the <DIV> on the page is updated with fields specific to that radio button option. To determine what content gets displayed when a radio option is selected, I call a JavaScript function and set the content appropriately using jQuery. Pretty easy so far. Let's assume that the User has toggled the radio buttons and filled in some data. Further down in the form, the User has entered an invalid e-mail address. When the User submits the View, the ModelState is invalid. If it is invalid, I return the View.
[Code]....
Problem is, when the View is returned, some of the form fields (that are static) are in place. However, the <DIV> that was previously updated based on User radio button selections is reset to its original state. When we return a View because of an invalid Model State, is MVC smart enough to return the View in it's modified state (in this case, with the modified DIV and dynamically added content)?
[AddressValidation] public AddressType[] Address { get; set; } internal class AddressValidation : ValidationAttribute { public override bool IsValid(object value) { //Assume we are valid var isValid = true; //Cast to something useful var addresses = (AddressType[])value; var defaultAddresses = addresses.Count(a => a.AddressCode == AddressCodeEnum.@default); if (defaultAddresses == 0) { ErrorMessage = "One address must be the default address"; isValid = false; } else if (defaultAddresses > 1) { ErrorMessage = "Only one address can be the default address"; isValid = false; } //Return the result return isValid; } }
When the model is validated by the controller, any of the subordinate addresses are properly validated and any errors are returned as modelstate errors. However, the custom attribute's error is never added to modelstate, even though it validates false. It seems as if this should work, the validation is called and I can step through it - it just never gets added to modelstate.
I have used IValidateObject successfully using a strongly typed view using HTML Helpers. When I hand code a view, still using a strongly type view, but no HTML/AJAX helpers, e.g.
[Code]....
Note: I am also handcoding the ajax and validation js.
When I post back to the Controller, even though the model data is correct, the ModelState is always invalid, having delved into the ModelState and found the error, it is always on the Model property where the IValidateObject.Validate is used. If I stop implementing the IValidObject on my model it all works fine, but I lose my IValidObject.Validate validation rules. Is there something I can do about this, what determines and at what point does .NET check validity of the ModelState? Presumably I am missing something that needs to be set on the ModelState and is not happening as I am hand coding the views/js.
Here I decorated each enum value with [EnumMember], so that I can use the Enum as Data Contract in WCF. And, AppointmentMode will be saved as INTEGER in database. So I need to serialize this Enum to its value. So I have specified value to each member like... [EnumMember(Value = "1")]
Problems:
If I use the above code as it is...SvcUtil not considering Enum Text, and generating the Enum in Proxy as below... [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] [System.Runtime.Serialization.DataContractAttribute(Name="AppointmentMode", Namespace="http://www.geniusdoc.portal.com/serivces/2011/v1/GdService")] public enum AppointmentMode: int { [System.Runtime.Serialization.EnumMemberAttribute(Value="1")] _1 = 1, [System.Runtime.Serialization.EnumMemberAttribute(Value="2")] _2 = 2, [System.Runtime.Serialization.EnumMemberAttribute(Value="3")] _3 = 3, } If I remove the Value from [EnumMember(Value = "1")], while deserialization is considering Enum Text, and giving results as below <AppointmentMode>None</AppointmentMode>
Expected result:
1. Enum in the Client proxy should be same original Enum. 2. Enum Deserialization should consider EnumValue, such a way that it will return <AppointmentMode>1</AppointmentMode>