Custom Model Binder For DropDownList Not Selecting Correct Value?

Sep 4, 2010

i've created my own custom model binder to handle a Section DropDownList defined in my view as:

Html.DropDownListFor(m => m.Category.Section, new SelectList(Model.Sections, "SectionID", "SectionName"), "-- Please Select --")

And here is my model binder:

public class SectionModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
if (bindingContext.ModelType.IsAssignableFrom(typeof(Section)) && value != null)
{
if (Utilities.IsInteger(value.AttemptedValue))
return Section.GetById(Convert.ToInt32(value.AttemptedValue));
else if (value.AttemptedValue == "")
return null;
}
return base.BindModel(controllerContext, bindingContext);
}
}

Now within my controller i can say:

[HttpPost]
public ActionResult Create(FormCollection collection)
{
var category = new Category();
if (!TryUpdateModel(category, "Category")
return View(new CategoryForm(category, _sectionRepository().GetAll()));
}

This validates nicely and the correct value for the section is assigned when the model is updated, however it does not select the correct value if another property doesn't validate.

View 1 Replies


Similar Messages:

MVC :: Access Model Validation Inside Custom Model Binder?

Sep 1, 2010

Is it possible, inside a Custom Model Binder, to fire "something" that "says" the value is invalid so it gets handled by validation part?

Basically, I am getting an exception when the value for the property is invalid.

View 1 Replies

Custom Model Binder Option In MVC 2 RC - How To Iterate Over Form Values

Feb 2, 2010

I'm using the MVC 2 RC. I have a custom model binder that used to iterate over posted form values in MVC 1.0 like this:

[Code]....

View 2 Replies

Default Model Binder Does Not Bind Model Class

Dec 28, 2010

I am trying to make a post that should use the Default Model Binder functionality in ASP.NET MVC 2 but unfortunately I can't get through. When I click on the checkout button I populate a form dinamically using jQuery code and then submit this form to the server. This is the form that get submitted

<form action="/x/Order/Checkout" id="cartForm" method="post">
<input name="__RequestVerificationToken" type="hidden" value="UDjN9RdWheKyWK5Q71MvXAbbDNel6buJd5Pamp/jx39InuyYIQVptcEubIA2W8DMUzWwnZjSGkLspkmDPbsIxy8EVuLvfCSZJJnl/NrooreouptwM/PaBEz2v6ZjO3I26IKRGZPqLxGGfITYqlf8Ow==">
<input id="CustomerID" name="CustomerID" type="hidden" value="1">
<input id="FirmID" name="FirmID" type="hidden" value="2">
<input type="hidden" name="CartItems[0].ServiceTypeID" value="1">
<input type="hidden" name="CartItems[0].Quantity" value="1">
<input type="hidden" name="CartItems[1].ServiceTypeID" value="2">
<input type="hidden" name="CartItems[1].Quantity" value="1">
</form>

This is the jQuery code that handle the submit event for the form
$("#cartForm").submit(function (event) {
event.preventDefault(); var form = $("#cartForm");
var panel = form.parent(); panel.parent().block();
$.ajax({ type: "post", dataType: "html",
url: '<%: Url.Content("~/Order/Checkout") %>',
async: false, data: form.serialize(),
success: function (response, status, xml) { panel.parent().unblock(); },
error: function (response) { panel.parent().unblock(); } }); });

This is the controller action that should be get called
[HttpPost]
[ValidateAntiForgeryToken]
public virtual ActionResult Checkout( CartModel cart ) {
} And finally this is the CartModel class involved
public class CartModel : BaseModel{
public int CustomerID { get; set; }
public int FirmID { get; set; }
public List<CartItemModel> CartItems { get; set; }
public CartModel() { CartItems = new List<CartItemModel>();
} } public class CartItemModel : BaseModel
{ public int ServiceTypeID { get; set; }
public int Quantity { get; set; } }

But the default Model Binder does not bind the web form data to a CartModel class. Using Fiddler I have been able to see that the data sent to the server is correct as you can see from the following snapshot.

View 1 Replies

MVC :: Indicate To The Model Binder That Want To Update The List

Apr 17, 2010

I have a control that's bound to a list property. If I remove elements from that list using javascript and post, then the model gets updated, and the elements get removed.

Unless I remove all the items from the list. Then no names for that property go into the form data, and so the default model binder leaves the model's list untouched. This code from DefaultModelBinder.cs line 572 in the RTM sources makes it clear:

[Code]....

So how do I indicate to the model binder that I do want it to update the list and Ido want the list to be emptied?

View 3 Replies

MVC Model Binder Not Working With A Dictionary?

Apr 4, 2011

Given the following view model and action using the DefaultModelBinder, it seems to ignore the dictionary, but bind all other properties correctly. Am I missing something here? Looking at the MVC source code this seems legit.

public class SomeViewModel
{
public SomeViewModel()
{[code].....

View 1 Replies

MVC :: Model Binder To Collection Properties?

Jul 14, 2010

I need to bind a bunch of properties over my model entities. All of them uses the List<T> class. I already managed to write a model binder that can treat individualy types derived from that class, but i can't set the value of this property on the model. every time i check the model afer the bind process i see a list with 0 itens.

Here's how it runs.

After i post the values the model binder catchs up the types for bindingAt the custom model binder i check if this property is a List<T> typeIf it is then i perform the bind like it have to be, if not i let the default binder do the job.Finally i return the object binded. What happens next is the issue i've mentioned "i see a list with 0 itens" on the Model property.

Here is the code of Custom Model Binder:

[Code]....

View 1 Replies

MVC Default Model Binder - Bind A Multiselect Dropdown To An IList

Sep 13, 2010

I'm using MVC 2.0 in an ASP.NET application using NHibernate. I have a working View, Controller and data access layer using NHibernate that is able to display and save an entity with a relationship to another mapped entity: Person -- > Location It's using the HTML helper HTML.DropDownListFor() to display a list of all Locations. The user is able to select one of the Locations from the list, and press save. The default model binder correctly sets the value of the Location on the Person entity being saved. This location is an nhibernate mapped entity, and is instantiated and has the id value that was selected in the dropdown list. Obviously, since the dropdown list that holds locations only has the ids of the locations, the rest of the values for the location are null. This is OK. I am only trying to save the Person with a reference to an existing location.

So, here comes the complication. We have a need to change the relationship between the two entities. Now the Person can have a reference to many locations. Person.Locations will be an IList My question is, how do you get the default model binder to take selections from a multiselect dropdown and populate an IList. I've managed to save collections of entities in the past using the syntax [index].PropertyName as explaing by Phil Haacked .... [URL]

The issue here is that I have only a dropdown list, and it will post back to the modelbinder a repeating key with different values:

Person.Location.Id: 2
Person.Location.Id: 4
Person.Location.Id: 5

This, unfortunately, doesn't work. the Location list keeps coming back Null. Our UI guy is using a slick JQuery pluggin to display the items in the select list, so I'd rather not have to use a different UI.

View 1 Replies

MVC :: Binding Class On Action Method Using Default Model Binder

Nov 7, 2010

I saw a post with posibble problems with Model Binding which is mentioned here. [URL]. Whats the best approach to this? Different approaches are below.
[Code]....

View 2 Replies

Binding Multiple Forms To Single Model Using Default Binder?

Jun 10, 2010

I have a complex page with several forms on it. The page is divided into sections, and each section has a continue button on it. The page is bound to a pageViewModel, each section addresses a different set of properties on the model. The continue button makes an ajax call to the controller, and the model binder binds it appropriately to the appropriate sections of the model. The section is refreshed appropriately. Finally, I would like to have a save button at the bottom of the page that takes all the forms, and binds all of the forms to the model. The model, at this point has all of the properties filled out, and can be processed accordingly. Can I accomplish this by some ASP MVC magic?

View 2 Replies

ADO.NET :: Selecting Database For Model At Runtime?

Jan 19, 2011

I have an application that uses multiple identical databases. When the user logs in they select the database that will be working with for that session. I am EF 4.0 for to access the database. What I can't figure out is how to dymaically pass the database name of the database from a session variable to the code in the EDMX file.

View 2 Replies

MVC :: Finding Correct Syntax To Update Model - Tryupdatemodel

Jan 19, 2011

when trying to update the db from the edit page, i would likt to take one field from the formcollection change things in it and update the model with the changed field.

what is the correct syntax to do that?

View 2 Replies

How To Bind Form Collection Back To Custom Model Object That Uses 2 Custom Objects

Mar 23, 2010

What I'm trying to do is rather basic, but I might have my facts mixed up. I have a details page that has a custom class as it's Model. The custom class uses 2 custom objects with yet another custom object a property of one of the 2. The details page outputs a fair amount of information, but allows the user to post a comment. When the user clicks the post button, the page gets posted to a Details action that looks something like this:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Details(VideoDetailModel vidAndComment) { ....}
[Code]....

The only fields on the form that is posted are CommentText and VideoId. Here is what the VideoDetailModel looks like.

public class VideoDetailModel
{
public VideoDetailModel()
{
[Code]....
I suppose if I added more form fields for the properties I need, they would get posted, but I only need 1 form entry field for the CommentText. If I could get the same Model objects value that were sent to the page to post with the page, it looks like the solution is rather simple. I think using the RenderPartial in the middle of a form is problematic somehow to how the form gets written in html. I can't really put my finger on why things went bonkers, but if I do my RenderPartials before my form and then begin my form with the text entry field and the hidden VideoId, the default ModelBinder works just fine. I was beginning the form, writing the hidden VideoId, rendering several partial views, create my CommentText field, and then closed the form out. The CommentText field would get bound just fine. The hidden VideoId would not. Maybe I missed a rule somewhere about using RenderPartial.

For completeness, the partial view I was rendering took a Comment object and just wrote out it's CommentText data. Several of these objects would exist for a single Video object. All of this data was in a custom type and passed into the View (the main view) as it's Model. This partial view did not have a form and did not have any data entry fields.

View 2 Replies

MVC Custom Dropdown From Model With Custom HtmlHelper?

Mar 31, 2011

i am just having a play with HtmlHelpers in MVC, very useful stuff and now i am trying to create one for dropdowns based on passing in a model ( any ) what the property is for the value and same for text.

so i have something like this:

[code]....

thats it

View 1 Replies

DropDownList For A Collection Not Selecting Value?

Mar 28, 2011

i'm using a strongly typed view with a custom viewmodel. this viewmodel contains a collection of books.

public IList<Books> Books { get; private set; }

i'm also passing a select-list to the view. however the DropDownListFor helper class doesn't automatically preselect the default value of the book.

@Html.DropDownListFor(m => Model.Books[i].AuthorID, Model.Author as SelectList)

everything else works, e.g. it does pass the selected value back to the controller.

i figured out a workaround by creating the select list in the viewmodel:

@Html.DropDownListFor(m => Model.Books[i].AuthorID, new SelectList(Model.AuthorList, "Value", "Text", @Model.Books[i].AuthorID.ToString()))

however i don't want to implement this workaround if there is a simpler solution. is there a way that the view can handle values from a collection?

View 2 Replies

C# - Selecting HttpHandler From Custom HttpModule?

Feb 17, 2011

I have an HttpModule and I'd like to choose the HttpHandler for the current request, is that possible? Also web.config is not an option because the condition is not based on path or extension. My googling skills have failed me, no matter what keywords I use all the results are "IHttpHandler vs IHttpModule".

View 3 Replies

VS 2010 - Selecting A Parameter From A Dropdownlist?

Aug 4, 2010

I have a drop-down list that is dynamically filled with a set of values. By viewing the source code in the browser I can tell that this list is correctly filled with the "value" and "text" parameters.

But if I try to retrieve the value using ddl.SelectedItem.Value I get the error "Object reference not set to an instance of an object" which means that there is no parameter in "value" to retrieve ...

Page_Load() contains an "If Not IsPagePostback" in which the list is filled. I don't want to use AutoPostback = True since I want to retrieve the value-parameter when I click a "save" button. I must have missed something fundamental here that I do not grasp ...

The code to fill the list looks like this:

Code:
Dim ds as Dataset ()
ds.ReadXml(the path to an xml file)
ddl.Items.Add(New ListItem("destination", "destination"))
ddl.DataSource = ds.Tables(0).DefaultView
ddl.DataBind()

This snippet does not generate any errors: Everything is printed as it should!

But inside my Submit function I cannot be retrieve the parameter:

Code:

objcmd.parameter.add("?destination ", OdbcType.VarChar).Value = ddl.SelectedItem.Value

View 29 Replies

Selecting Dropdownlist Item In IronPython?

May 28, 2010

I want to select a particular item in a dropdownlist by value, in asp.net using IronPython.
I found I can do it like this

listItem = ddl.Items.FindByValue(x)
if listItem != None: listItem.Selected = True

But I want to do it in one line

View 1 Replies

MVC :: Selecting And Inserting Dropdownlist Value In To Table?

Mar 31, 2010

I have a table MemberProfile with columns FirstName, LastName, Gender and ComplexionCode.here iam displaying complexioncode as a dropdownlist with values fair, very fair, brown and when user selects a value I want to insert that in to table

I have creted a class( LookUpCodes) and written following code

public static IEnumerable<ComplexionCode> ComplexionCodes
{
get

[code]...

now when I click the button FirstName, LastName Gender are inserting in to the table. only Dropdownlist( ComplexionCode ) value is not inserting.

View 1 Replies

Filtering Value Of A Grid By Selecting Dropdownlist?

Apr 6, 2010

I have a grid and dropdownlist.I want to filter values in a grid by the selection of dropdownlist.How Can i do this? My code is like this

<asp:DropDownList ID="DDLVisitedVol" runat="server" AutoPostBack="true" DataSourceID="DsVisitedVol"
DataTextField="VisitedVol" DataValueField="VisitedVol"
Width="244px">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString=""
ProviderName=""
SelectCommand="SELECT [ID],[UserName], [Email], [visitedVol] FROM [HitTracker] where visitedVol=@VisitedVol ">
<SelectParameters>
<asp:Parameter Name="VisitedVol" Type="String"/>
</SelectParameters>

How can i pass the selected value of dropdown list to @VisitedVol.

View 1 Replies

MVC :: DropDownList And TemplateInfo Not Selecting Proper Value?

Feb 22, 2010

I am having trouble with DropDownList (and/or DropDownListFor) when using TemplateInfo's HtmlFieldPrefix in a strongly-typed view. DropDownList properly selects the value from the model when the prefix hos not been site. Once I set the value of HtmlFieldPrefix, the value from the model is not selected in the drop-down list.

I am using .NET 3.5SP1 and ASP.NET MVC 2 RC2.

Model:

public class TestModel
{
public string Text { get; set; }
public string Option { get; set; }

[Code]....

Is there something I should be doing differently to have the proper value selected in the drop-down list?

View 15 Replies

C# - DropDownList Not Populating With Correct Value In MVC?

Feb 22, 2011

so I am having an issue getting a drop down list to choose the right value when it renders. It always defaults to index zero. However, I do have a view in another place where it renders just fine and selects the right value. I don't understand the difference.

Here is a trimmed down version of the view that works correctly:

@model AppName.Models.Guest
@using (Html.BeginForm())
{
Attending Ceremony?<br />
@Html.DropDownListFor(x => x.ConfirmCeremony, new SelectList(new Dictionary<string, string>
{
{"No Answer", "No Answer"},

[Code]....

View 1 Replies

Tab Index Stops Working After Selecting Value From DropDownList?

Feb 1, 2011

Im working on an ASP.Net web forms application, where I have a form and the Index is working correctly, until I select a value from one specific control, a dropdownlist. After that no matter what control I am on if I press TAB it will go to the URL/Address Bar, from there to the search bar and then again to the URL bar...

View 1 Replies

Selecting Item From Dropdownlist Opens Other Page?

Apr 9, 2010

I have several asp dropdownlists that are populated from a database. I would like it so that when an item is selected it opens a seperate page depending on the selection.

View 5 Replies

Selecting Item In Incapsulated DropDownList On DataBind?

Feb 15, 2010

I have a complex UserControl with the main purpose to encapsulate DropDownList with a number of properties for advanced manipulation.

List is being populated on PreRender event depending on properties previously were set:

protected void Page_PreRender(object sender, EventArgs e)
{
sourceClient.SelectCommand = this.Property1 ? "exec a" : "exec b";
}

The most used property is ClientID:

[Category("Settings")]
public int ClientID
{
get
{
return Int32.Parse(DropDownList1.SelectedItem.Value);
}
set
{
DropDownList1.Items.FindByValue(value).Selected = true;
}
}

Getter commonly is being called by ControlPameters in SqlDataSources on pages with this control.

Setter - from markup: <uc:UserControl1 runat="server" ClientID='<%# Bind("ID") %>' />.

Why does setter from Bind is called earlier then PreRender? And DropDownList is empty and item selecting doesn't work! How to workaround this behavior?

View 1 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved