Unobtrusive Validation Optio With DropDownListFor MVC 3
Feb 16, 2011
Why is it that client validation is getting triggered saying that my Default Theme field is required even if I didn't specify a [Required] attribute in my model?
public class Site
{
public int SiteId { get; set; }
Required(ErrorMessage = "*")]
[LocalizedDisplayName("Title")]
public string Title { get; set; }
[Required(ErrorMessage = "*")]
[LocalizedDisplayName("RootDirectory")]
[code]...
I am migrating my application to MVC3 and getting this error message Validation parameter names in unobtrusive client validation rules must start with a lowercase letter and consist of only lowercase letters or digits.How can I ovoid it without going and modifying all my ViewModels
I know the unobtrusive client validation is required using Html.XXXFor to generate the input html. But in my project, I want to use Html.TextBox(), and also want to use unobtrusive client validation. I think you'd better expose a extension method like Html.TextBox(..., ModelMetadata,... ) allow me pass the ModelMetadata manually.
I'm using the latest RC with asp.net mvc 3, and have turned on unobtrusive javascript validation and added the necessary scripts to the page. All of the validation works perfectly, but when I try to submit the page, it simply doesn't post. If I turn unobtrusive javascript off in the web.config without making any other changes, everything works perfectly fine.
Is it possible to validate a form that has been loaded dynamically by Ajax? I have two forms that I load on a page with another form and niether of the Ajax forms can be validated.
I am new to ASP.Net MVC 3, facing some issues while trying to implementing client side unobtrusive validation for a editor template I have created for showing date in a custom way.EditorTemplate for displaying the date in three parts
I make a partialView based "Detail-Edit" function as : 1 create two partial view : Details , Edit
2 in Details PartialView I render a link as "Ajax.ActionLink( .. "Edit" , AjaxOptions { get , updateTargetId="xx" , InsertMode="Replace" } ) 3 in Edit PartialView I use "Ajax.BeginForm()" ...
As a result I can perfectly swith from Details view to Edit view in ajax manner ; however when I change to Edit mode in this approach, the "obtrusive js validation" loses its function that it can't prevent user from callback ajax even with invalid inputs. I think this is a common issue for MVC3 developers, could anyone help to give a standardized solution against this ? or any other valuable solutions ?In a word, just want to realize the traditional UpdatePanel-based "Edit,Details" effect on MVC mode with ajax .
I have a table, and each row has a column where its data is actually a select list. I want the user to be able to select a drop down item, and when they POST, it saves the Id of the selected item. Is this possible?
I'm trying to model a "Room" each room has a number of Jacks, there are 2 types of Jacks (Data/Voice) - this is the select list.
[Code]....
Something like this does not work. I created a stub in my view model
I use the Entity Framework and Linq to Entities with MVC 2.0. When use the DropDownListFor from Html helpers to populate a dropdown that contains an ID from a foreign object, I post the form data but I canīt set the correct relation. Using the debug, I can see the ID retrieved from dropdown at my returned foreign object ID, but I think that I not use the association correctly.
I'm new in ASP.NET MVC 2 and I'd like to write a very simple dropdown list which gives static options. For example I'd like to provide choices between "Red", "Blue", and "Green".
I am looking at ASP.NET MVC2 and trying to post a complex object using the new EditorFor syntax.I have a FraudDto object that has a FraudCategory child object and I want to set this object from the values that are posted from the form.Posting a simple object is not a problem but I am struggling with how to handle complex objects with child objects.I have the following parent FraudDto object whcih I am binding to on the form:
public class FraudDto { public FraudCategoryDto FraudCategory { get; set; }
I am trying to populate a drop down list from my controller for a create action. I can display the dropdown as I want but when I cannot get the value to be stored in the database. My models:
[Code]....
Controller: [Code]....
View: [Code]....
This above snippet will show me the message "The value '50117dae-a7d7-4371-926f-7b1f7aaec133' is invalid."
if I change the line to @Html.DropDownListFor(ct => ct.CollectionType.CollectionTypeId, new SelectList(ViewBag.CollectionTypes as System.Collections.IEnumerable, "CollectionTypeId", "Title")) @Html.ValidationMessageFor(model => model.CollectionType)
the page will not do anything - I believe this could be because the controller is trying to add a new CollectionType.
Learning about dropdown lists, Im trying to add a RSVP create page for nerddinner as in Scott Gu's blog with a Html.DropDownListFor listing available dinners. I can get the dropdown list populated but I cannot get the dropdown to pre select the value ("Sample Dinner 2") I want. Im using an initilizer to seed a few dinner objects in the db. The database is sql ce 4 using a EF 'code first approach'. Sorry I know this is a v common problem and hate to ask, but honestly have spent quite some time on this but cant get it to work:
ViewModel
public class RSVPViewModel { public SelectList DinnersList { get; set; } public RSVP Rsvp { get; set; } public string SelectedItem { get; set; } } [code]...
So is not preselecting the dropdownlist with the value "Sample Dinner 2" when the page loads. The list displays ok and sets the correct DinnerID when I make a selection and click Submit.Tries this also:
but doesnt set or bind to Rsvp.DinnerID.This preselects from the list but doesnt bind (or set Rsvp.DinnerID)
@Html.DropDownList("DinnersList")
I want to keep it mvc3 so want to implement with strong type using ViewModel approach (no ViewData) and preferably using Html.DropDownListFor (not Html.DropDownList).Viewbag seems unnecessary for this case.Thinking I should be using a selectList of selectListItems I tried this verbose approach :
RSVP rsvp = new RSVP(); string selected = "2"; List<SelectListItem> dinners = new List<SelectListItem>();
foreach (Dinner dinner in dbc.Dinners.ToList()) { SelectListItem slDinner = new SelectListItem(); slDinner.Value = dinner.DinnerID.ToString(); slDinner.Text = dinner.Title; slDinner.Selected = (slDinner.Value == selected); dinners.Add(slDinner); } var dinnersList = new SelectList(dinners, "Value", "Text", selected); var viewModel = new RSVPViewModel { DinnersList = dinnersList, Rsvp = rsvp, SelectedItem = selected };
However still no work. Should I be making use of the ViewModel SelectedItem property in: @Html.DropDownListFor.. somehow? Something like :@Html.DropDownListFor(x => x.SelectedItem, Model.DinnersList)but how to I get a selected value to set Rsvp.DinnerID. I think thats called binding.
Both samples have complete VB/C# project downloads. Please post comments/questions in this thread.http://www.asp.net/mvc/tutorials/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript Walkthrough: Using TDD with ASP.NET MVC
I'm trying to add a `Class` to the `EditorFor` Helper inside an `EditorTemplate`.
The problem is that because I'm using Unobtrusive Validation, the input element already has classes assigned to it.
Here is my EditorTemplate
[Code]....
And here is the output <input class="text-box single-line" id="BirthDate" name="BirthDate" type="text" value="08/08/1980" />
You can see here that the `datepicker` class has not been added, yet the "value" has been properly formatted.
Basically I can see that the `EditorTemplate` is working, but the `Class` is not being appended to the rest of the classes on the `<input>` element. Do any of you know how to fix this?
And I also tried with a normal DateTime instead of a nullable one. If I put in a date which is not possible then it still shows as valid. How can I achieve validation, both server side as with unobtrusive client validation?