MVC :: 3 Dataanotation External To The Database Fields In The Model Not Validating?
Mar 20, 2011
How can i make this work like i have 5 fields in my database table . 2) i created a model for validation with datannotation and created the compare password field as well with comparepassword attribute. (now my model has 6 fields including one external field compare password and 5 database fields)3) i created a view with that model.(User)4) now i created a controller as well but the problem arise here that when calling that actionmethod the compiler complains about the external field and tells it cannot find any extension method . how can i create the extension method or solve this error?
Basically I have RegisterModel2 that has a Person class. My requirement is that Phone Number and Address are not required for registration. But if they try to enter a Phone number of Address then it should validate it. Problem is that it is always stating that the child fields of Phone (area code, number) and child fields of Address (street1,city,etc) are required. Is there a way to annotate in the RegisterModel that a parent class is not Required but if any data in a child element is given then and only then should the child elements be validated?
My Person EDM class has a nullable 0.1 -> 0.1 navigation property to Phone and Address.Here is the person class
[MetadataType(typeof(Person_Validation))] public partial class Person { }
public class Person_Validation [code]....
The Person EntityObject has an optional/nullable Navigation Property to the Phone Object.
The Phone object has these annotations,[Code]....
I have RegisterModel defined as follows: [Code]....
My View looks like this: [Code]....
And here is my Controller Action it is posting to: [Code]....
My team is building ViewModels with model validation inside the MetadataType. My question is that I'm using a non-MVC project, can I use it to validate the model?
[MetadataType(typeof(PersonMetadata))] public class Person { public int ID { get; set; } public string Name { get; set; }
I added requiredvalidator to validate the input field in hte detailviews control. the only probably problem is error message shows up when form popup. I only want to show the error message after I click on the submit button. here's my code.
I'm trying to build a link to an external website using some properties of my model class in my view page, e.g. I want it to render as something like -[URL]where post-id would be pulled from the model (I'm using a strongly typed view model here - I can't use ViewData as there's a list of items being pulled back all of which need seperate links).I tried doing < a href="<% model.PermaLink(); %>">, where PermaLink is just some string, however the value doesn't get picked up.If I try < a href="<%= model.PermaLink %>">, I get an error - CS1502: The best overloaded method match for 'System.IO.TextWriter.Write(char)' has some invalid argumentsIs there any way to do this? I tried adding the runat="server" attribute, however this just linked to my local site and controller/model actions.
I have a problem with passing a model to a controllerIn my controller I have a HttpPost function that gets a EF model.The problem is that the form does not contains all properties of the EF model.When the function is called that gets this EF model, I get error messge of fields that are not nullable in the EF model.That's because the fields are not in the form, so the not nullable properties gets no value.
One of the fields on the view does not have a label when i ran the project, although the other fields got labels and the following HTML code to generate the label already exists:-
By picking MVC for developing our new site, I find myself in the midst of "best practices" being developed around me in apparent real time. Two weeks ago, NerdDinner was my guide but with the development of MVC 2, even it seems outdated. It's an thrilling experience and I feel privileged to be in close contact with intelligent programmers daily. Right now I've stumbled upon an issue I can't seem to get a straight answer on - from all the blogs anyway - and I'd like to get some insight from the community. It's about Editing (read: Edit action). The bulk of material out there, tutorials and blogs, deal with creating and view the model.
So while this question may not spell out a question, I hope to get some discussion going, contributing to my decision about the path of development I'm to take. My model represents a user with several fields like name, address and email. All the names, in fact, on field each for first name, last name and middle name. The Details view displays all these fields but you can change only one set of fields at a time, for instance, your names. The user expands a form while the other fields are still visible above and below. So the form that is posted back contains a subset of the fields representing the model. While this is appealing to us and our layout concerns, for various reasons, it is to be shunned by serious MVC-developers.
I've been reading about some patterns and best practices and it seems that this is not in key with the paradigm of viewmodel == view. Or have I got it wrong? Anyway, NerdDinner dictates using FormCollection och UpdateModel. All the null fields are happily ignored. Since then, the MVC-community has abandoned this approach to such a degree that a bug in MVC 2 was not discovered. UpdateModel does not work without a complete model in your formcollection. The view model pattern receiving most praise seems to be Dedicated view model that contains a custom view model entity and is the only one that my design issue could be made compatible with.
It entails a tedious amount of mapping, albeit lightened by the use of AutoMapper and the ideas of Jimmy Bogard, that may or may not be worthwhile. He also proposes a 1:1 relationship between view and view model. In keeping with these design paradigms, I am to create a view and associated view for each of my expanding sets of fields. The view models would each be nearly identical, differing only in the fields which are read-only, the views also containing much repeated markup. This seems absurd to me. In future I may want to be able to display two, more or all sets of fields open simultaneously.
So i'm working on the form that i started MVC with - the problem is that i'm NOT using a ViewModel for the view, its an actual Linq to SQL object. And so far it works fine. This form is a beast and id rather not refactor it to use viewmodels....
My big problem now is that depending some condition, i pretty much set almost everything to disabled when a particular dropdown is selcted (to mimic a deactivated state) - when the user hits submit, the model fields are now null, even tho you can see them filled in (just greyed out and unselectable) and validation refuses them.
Is there anyway around this other than to refactor the Views to use ViewModels (and set different validation rules so submit works)?
I am beginner to MVC. I have created a View with dropdownlist, text box and text area. I didn't create a strongly typed view because these fields are not generating from the database. Is this right way of doing it? Do I have to create a 'Model' class and generate a strongly typed view? I am trying to validate(client and server side) these fieds before saving into the database. How to create a Model class for these fields?
i just noticed that if my controller has a parameter with a name that matches the name of a field in my view model, and the view emits the value of the model's field, the value emitted is that passed in the query string, not the one set by the controller. is this by design?
here is what i mean:
my view model:
public class MyViewModel { int id; string name; [code]....
sending a request to "create?id=1234" emits "1234" in the hidden field instead of "1".
I am facing few issues. I am using MVC2.I am developing a form which is being created dynamically based on its layout and all html attributes info stored in DB table. This dynamically generated form stores data(this table have all html field names as columns) in another db table(db is mysql).
I have created ViewModel class in which i get both design table entity objects and data table entity object. I, then, created strongly typed view based on that ViewModel. But the problem is when i rendering html fields using html helpers i.e
TextBox(Model.tblDesign.htmlField_name).it doesnt bind with the columns of Model.tblData whose names are same as of Model.tblDesign.htmlField_name. how can i bind fields of data table?
I would like to separate my attribute decoration(3-4 per field) by having them someplace else so that my code looks readable.Also the arguments passed to some attributes should come from a resource file.EG:[Required("Cannot proceed without entering *field_Name*")]
I need just [Required] Possible duplicate of this question(on which i couldn't resist offering a bounty) : Default resource for data annotations.
I am using Data Annotations in ASP.NET MVC2 for data validation.There are cases where Model is invalid in Control Action method, by the time I received it. So I add defaults [where data is not present in cetain scenarios, for valid reasons. Other times it is error].All I want to do at this point is, because I updated the model, I want to re-validate model - so that it re-applies all validation again as per data annotations.
If I call Controller.ValidateModel method, I am getting exception saying, it cannot take the model object or type is not correct.If I don't re-validate, my Model.IsValid is false -even though I set up defaults.I am wondering if there a way I can call to re-validate model, from in-side a controller action?
I'm using MVC 2 with some Models from a LinqToSql project that I built. I see that when I post back to a Controller Action after editing a form that has a DateTime field from the Model, the MVC Html.ValidationMessageFor() helper will nicely display an error beside the Date text box. This seems to happen automatically when the you test ModelState.IsValid() in the Controller Action, as if the MVC model binding automatically knows that the DateTime field cannot be empty.
My question is... I have some other string fields in these LinqToSql generated classes that are Not-Nullable (marked as Not Nullable in Sql Server which passes thourgh to the LinqToSql generated classes), so why doesn't Mr. MVC pick up on those as well and display a "Required" message in the ValidationMessageFor() placeholders I have added for those fields?
Sure, I have successfully added the MetadataType(typeof<t>) buddy classes to cover these Non-nullable string fields, but it sure does seem redundant to add all this metadata in buddy classes when the LinqToSql generated classes already contain enough info that MVC could sniff out. It MVC validation works with DateTime automatically, why not these Not-nullable fields too?
Model is coming up as Invalid Scenario is I have a custom ViewModel and certain fields don't show up on the screen (like Id & some computed fields etc..) so when the data gets posted back the Model.IsValid() comes to false Q Do I have to pre init these fields when I do create
ActionResult CreateOrder(int customerID) { var order=new OrderViewModel(); //shall I init the fields which are not being keyed in by the user? }
I have a textbox that the user is suppose to enter a valid user name , the valid user names are stored in database. for example the valid user names might be U100, U101, U102 ,U103,U104,U105,U106,U107. so if the user types anything other than that he should get a error message and I dont want to implement a drop down list for that , how to do this in asp or should i explore javascript for this.
I have two ddl'a which i insert into a database inform of a grid. Now i will like to make sure the two data i am inserting is not already on the databse and if it exist i want a message to show. I dont have anything right now. I just need ideas on how to go about it.
There are multiple roles. (Role A, Role B etc) There are multiple input/output fields. (Field A, Field B etc) There are multiple permission levels controlling access to each field. (Read, Direct Edit, Edit With Approval, None) Each role has its own permissions to fields. (Role A has Read Permission to Field A; Role B has Direct Edit permission to Field A etc) Every role can be assigned to users and they are assigned by Geographic information. (User A is assigned to Role A for Continent: Europe - Country: Germany; User B is assigned to Role A for Continent: Europe - Country: France; User A is assigned to Role B for Continent: Europe - Country: France etc) Users can have multiple roles User identity is coming from Windows Authentication.
is it possible to represent this type of kind of multi-layered security model using ASP.NET internal membership/role providers? If so, what should my starting point be? Creating only custom role provider with custom methods and fields be enough?
I am using DropDownlist to validate culture as follows. <asp:DDL ID="ddlculture" runat ="server" /> for this ddlculture data is comming from sql database like this
dim dt as datatable dim dr as datarow dr(0) = "" dr(1) ="--select culture" dt.Rows.InsertAt(dr, 0) ddlculture.DataTextField = "CultureName" ddlculture.DataValueField = "Culture" ddlculture.DataSource = dt ddlculture.DataBind()
everything is ok... but i am trying to validate it using Required Field Validator or compare validator or javascript. it is not validating. what is the problem
It's been so long since I've done this that I don't remember how.
Basically, I am creating a Web Application from scratch. I have dragged the LoginBox to the page and went to "Administer Website". Unfortunatel I see no where where I can choose to have the application talk to an externally-hosted database as opposed to defaulting to the "App_Data" folder. I am hosting an SQL instance named "SQLEPXRESS" on my development machine and have configured a database and user. I wish for the site to use this database and user and have set the connectionstring as follows in the web.config:
Yet even after adding that I see it showing no where in the "Administer Website" section. Please walk me through getting my application to talk to this database and configuring the necessary tables. I remember there needing to be some sort of exe I needed to run to do this, but my Google and forum searching is failing me.
I need to send some parameters to an external website using the <asp:HiddenField /> controls and also at the same time, submit data to a sql server database. The part for submitting the data to the database is working, but I need to try to get the parameters from the hiddenfields to also be passed through. I thought all I had to do is create the hidden fields and in the code behind, set the values from the textboxes that the user would fill out.
My source code is below:
[code]...
What am I missing? The hidden fields are losing their value before posting to the external website. I've looked everywhere to see why this won't work.
I am using a bound gridview in ASP.NET 2.0. The gridview has the ability to edit/update and insert rows. One of the columns holds a number which represents a percentage. What I cannot figure out is how to ensure that all the rows in the gridview total 100% before being able to send the updates or newly inserted data to the database.
For example say there are 5 rows in the gridview, each row has 20% stored in the column so it adds up to 100% which is fine, the data is updated/inserted in the database. But say each row only had 15% totalling 75%, the user should not be able to send the updated/inserted data to the database until either they add a new row with a percentage of 25 or they edit the other rows for a cumulative total of 100%
i am working with a database to create a website i know how to display the data into tables on my website but is there a way of changing the database layout when a button is pressed. i.e. so that when a button is pressed on the website the program sorts all of the first names into order (A to Z) in the database - so that the information is displayed A to Z