MVC :: ModelBinder Not Binding For Sub-object?
Jun 7, 2010
I have a class:
[Code]....
Then another class, for ProjectCustomer:
[Code]....
My view is the same as any standard auto-created view, with properties set using the likes of:
[Code]....
In my edit page, for editing the fields for these classes, everything works fine, the model binder works, and validation works. In my create page, only the Project class properties get set and the ProjectCustomer properties remain null. I've tried everything I can think of from manually instantiating a new ProjectCustomer before calling TryUpdate model, to letting MVC handle the lot by including the class as a paramater for the action. The values are being passed just fine, as I've tried a FormCollection too and in the debugger the FormCollection contains all the correct fields (i.e. Customer.Name etc.) yet no matter what the ModelBinder just wont attach the inputs to the Customer object inside the Project object, but will only not do this on the Create action, and does it fine for the Edit action even though the code is almost entirely identical.
why the ModelBinder is just refusing to bind for the Create action and no other? What steps can I perform to debug the ModelBinder when it's not working properly like this?
I've tried every combination of things I can think of under the sun, and simply can't understand why it works for one action, but not for another, especially when the code I've used is fairly basic. I'll note that these classes were intended as MetaData classes hence their pointless seeming simplicity, but as part of trying to track down the problem I've stripped them to the bare bones setup above, and still no luck.
Under what circumstances does the ModelBinder decide not to fill the properties of a sub-object?
View 2 Replies
Similar Messages:
Mar 12, 2010
I am receiving Object reference not set to an instance of an Object when binding Child dataGrid in the ItemCommandEvent of Parent dataGrid.
[code].....
View 1 Replies
Apr 29, 2010
We know that authorization's stuff is a cross cutting concern, and we do anything we could to avoid merge business logic in our views. But I still not find an elegant way to filter UI components (e.g. widgets, form elements, tables, etc) using the current user roles without contaminate the view with business logic. same applies for model binding.
Example
Form: Product Creation
Fields:
Name
Price
Discount
Roles:
Role Administrator
Is allowed to see and modify the Name field
Is allowed to see and modify the Price field
Is allowed to see and modify the Discount
Role Administrator assistant
Is allowed to see and modify the Name
Is allowed to see and modify the Price
Fields shown in each role are different, also model binding needs to ignore the discount field for 'Administrator assistant' role.
View 3 Replies
Jan 25, 2011
This project is pretty far away and I'm not in the position to go make changes all over the place (If I could, deleting the lot would be what I'd do!)
I want to create a modelbinder that would resolve any dependencies my View Models might have (using StructureMap).
It should not require me to implement a specific interface (so many developers, so many interfaces..I rather keep things clean) and hopefully not require one to go register each model binder individually (Now I'm asking too much,taking the first requirment
in consideration).
Probably will get it right tonight, but figured I'd ask.
View 3 Replies
Mar 29, 2010
I'm starting with EditorTemplates and I have this situation: I have and fild int that represents and phone number. In EditorTemplate I'll separate it in 2 textbox. But How can I join (concatenate) it in my action? If possible, I want to still use ModelBinder.
View 1 Replies
Feb 22, 2010
I'm trying to bind the selections in a multiple selection SELECT, to an IList input in the controller.
<select name="users" multiple="multiple">
<option>John</option>
<option>Mary</option>
[code]...
View 2 Replies
Apr 7, 2010
Is it possible to do data binding on the fields of an object just like in WPF?
Something like this:
<TextBlock Text="{Binding ElementName=lbColor}" />
just for an asp:TextBox element. What I want is that on submit to have the new values inside the binded object and I don't want to manually read and set the values.
View 1 Replies
Jan 26, 2010
I'm having trouble finding a good tutorial on binding complex lists to an object. Essentially we have currencies that are user defined, we need to generate a form for each currency to allow the user to input exchange rates. I think I'm doing my list properly according to this post, however I'm not getting any data bound. here is my ASPX snippit.
[Code]....
Here is my form data object and associated objects.
[Code]....
Here is the html that is rendered.[Code]....
I'm having trouble finding a good tutorial on binding complex lists to an object. Essentially we have currencies that are user defined, we need to generate a form for each currency to allow the user to input exchange rates. I think I'm doing my list properly according to this post, however I'm not getting any data bound. here is my ASPX snippit.
[Code]....
View 1 Replies
Oct 26, 2010
Is it possible to bind a rdlc report to a business object (.NET 4/VS 2010)In my report I have TextBoxes called Name and Email.Say I have an object Person with properties Name and Email.Can I bind the .rdlc with an object Person at runtime?
View 1 Replies
Apr 28, 2010
I have a class Person with three properties, ID, Name, Registered. I have the following array of this class
Person1 (ID=A00 ,Name=Andy )
Person2 (ID=A01 ,Name=John )
Person3 (ID=A02 ,Name=Lina )
Person4 (ID=B00 ,Name=Rachel )
Person5 (ID=B01 ,Name=Peter )
Person6 (ID=C00 ,Name=Hans )
Person6 (ID=C01 ,Name=Emily )
I need to show this array in a treeview in this way: When the person has ID finished in 00, it is showed how the father node, and the other persons starting with the same letter are the child nodes.
In this case Andy would be the father indented 0, and john and lina would be his childs indented 1.
I need to show this structure in a checkbox treeview and when I select the father checkbox, the child checkbox must be selected too.
View 3 Replies
May 18, 2010
I have got a list of person with address object attached to it. When assigning the values to the report, how do I binding
address.address1.value
address.address2.value etc
to the textbox of local report.
View 8 Replies
Nov 16, 2010
I used bind all GridViews, DetailViews etc. on my page using an ObjectDataSource (unless it wasn't possible to do so). Recently, I've started binding all my contols programatically. I find this a lot cleaner and easier, though some may disagree. Binding with a ObjectDataSource obviously has it advantages and disadvantages, as does doing it programatically.Say I bind a GridView programatically (e.g. GridView1.DataSource = SomeList), when I change page on the GridView, I have to also code this. Each time the page changes I have to call GridView1.DataSource = SomeList again. Obviously with a ObjectDataSource I don't need to do this. I normally stick my SomeList object into the ViewState so when I change page I don't need to hit the database each and every time.
My question is: Is this how the ObjectDataSource works? Does it store it's data in the ViewState and not hit the database again unless you call the .Select method? I like to try and get the best performance out of my applications and hit the database as few times as possible but I don't really like the idea of storing a huge list in the ViewState. Is there a better way of doing this? Is caching per user a good idea (or possible)? Shall I just hit the database everytime instead of storing my huge list in the ViewState? Is it sometimes better to hit the database than to use ViewState?
View 1 Replies
May 31, 2010
i have one ajax accordion control and inside that i have a list view inside that control. now listview is bind to objectdatasourcecontrol.
and object data soruce control is bind to a custom class. Now the problem is that i need to naviagate to different pages on the click of the listview items or load user control...Now how to do that?. i am pasting my code here.
[Code]....
and class file which is bind to objectdatasource control
[Code]....
View 4 Replies
Dec 28, 2010
I am trying to hide or show a certain section of my table depending on the value of a property in my binding object(s).
public class Class1
{
public bool Display { get; set; }
}
In ASP.NET MVC, I can just do the following (assuming that Class1 is the model that binds to the page.)
<table>
<tr>Row 1</tr>
<tr>Row 2</tr>
<% if(Model.Display) { %>
<tr>Row 3</tr>
<tr>Row 4</tr>
<% } %>
</table>
How can I achieve the same behavior in transitional ASP.NET? That "Model" variable is not available. How do I retrieve the data binding object?
View 2 Replies
Mar 1, 2011
I want to bind an object to a form view.
[Code]....
Now, is it possible to generate a new object on update, without getting and reading each textbox with findcontrol?
View 6 Replies
Feb 13, 2010
Quick question here. I'm sure it's possilbe, just can't get it to work.
I've got a gridview. In have a gridview. The gridview is bound to a list of my custom class. The class exposes a link to an image as well as the image's height and width. I have a Image Control in the gridview. I've bound the Image Url to the correct property. Now, I'd like to bind the height and width properties as well. But everytime I do that I get the following error:
Cannot create an object of type 'System.Web.UI.WebControls.Unit' from its string representation '"<%#Bind("GetImageHeight()")%' for the 'Height' property.
Here is an example of the tag:
<asp:Image runat="server" ID="imgProduct" ImageUrl='<%#Bind("ImageUrl")%>'
Height="<%#Bind("GetImageHeight()")%>" Width="<%#Bind("GetImageWidth()")%>">
</asp:Image>
[code]....
View 3 Replies
Jul 16, 2010
I have a List of complex objects containing other objects within that I give as the data source to a gridview.(currently I'm using BoundFields for the columns). I need to bind data to the columns from the objects within at run time. How can this be done?
View 1 Replies
Jan 6, 2011
I am using ASP.Net MVC2 and LINQ to SQL. I am using DataAnnotations and model binding in conjunction with a Form/View and its working beautifully well. Loving that.. My view is an "Add new Employee" form that's adding a new "Employee" complex object. Every Employee also has a child complex object called an "Address".
I am using the bound Html helpers in the view, such as Html.TextBoxFor(model => model.NewEmployee.FirstName) for example. Working beautifully well, validating beautifully well both client and server and coming into the controller fully populated and ready to be saved! Exciting.. ModelState.IsValid returns true and I go to save the new Employee.
The Employee is created fine but the system also creates a blank/new Address record in my Addresses table even when the Address fields are blank! How can I prevent any Address from being created, in situations where I ONLY want to create a new Employee with no Address. An example is when the user supplies an existing Address, then I wish to simply set the new Employee's AddressID to that of an existing physical address (I hope that makes sense). But it could apply to any situation where you need to create a new complex object, but you don't wish for LINQ to create any of its child complex objects. I have tried setting NewEmployee.Address = null after it is received in the controller, but even after that, a blank/new Address is still created. Even if I try NewEmployee.Address = SomeExistingAddress, it does correctly link the Employee to the existing Address, but it STILL goes off and creates another redundant new/blank address record! Which is really weird..
View 10 Replies
Jan 5, 2011
I have a "Create New Employee" ASP.Net MVC form. My complex object is an Employee and an Employee has an Address, which is another Complex object. On my View/Form I collect all required values for both the Employee and the Address. I'm using the bound HTML helpers such as: Html.TextBoxFor(model => model.EmployeeAddress.StreetName)
AND
Html.TextBoxFor(model => model.NewEmployee.FirstName)
This is all working beautifully well. Model binding is working like a dream, both server side and client side validation using DataAnnotations is working beautifully well and I am nicely receiving my populated complex objects as expected in the Controller.. Now I'm trying to save.. The Employee should always be newly created, because its an "Add New Employee" form. But sometimes the Address is an existing Address and I don't want to insert another one. Rather, I just want to link the Employee to the existing AddressID of the one that already exists in the database.
So I wrote a nifty GetExistingOrCreateNewAddress(Address PostedAddress) method which works great so I end up with the correct Address to use and link to the about to be saved Employee object. This is all happening in the same DataContext, so no problems there..
BUT even when I link the about to be saved Employee object to an existing Address, on save a new/empty Address row is created in my Addresses table. Even though the newly created Employee does link correctly to the existing Address I told it to! Why is it so??? And how can I save the new Employee without LINQ automatically creating a blank Address for me. Because I'm explicitly specifying an existing Address it should be linked to instead!
[HttpPost]
public ActionResult CreateEmployee(EmployeeDetailsViewModel NewEmployeeDetails)
{
if (ModelState.IsValid)
{
EmployeeRepository ER = new EmployeeeRepository();
// Fetch or Create the appropriate Address object for what has been entered
Address ActualAddress = ER.GetExistingOrCreateNewAddress(NewEmployeeDetails.EnteredAddress);
// Link this Address to the "about to be saved" Employee
NewEmployeeDetails.Employee.Address = ActualAddress;
// Lock it in..
ER.SaveNewEmployee(NewEmployeeDetails.Employee);
View 2 Replies
Sep 29, 2010
Okay, here's something that I could easily do the hard way and manually wire up each form element and save it to a datatable in memory, but there has to be a more efficient way to do it.
Here's what I have:
1. A strongly typed datatable and tableadapter in a XSD name Orders
2. A formview control which currently is connected to an ODS connected to the Orders tableadapter, this makes it easy to wire up the databindings for each form field in design view
I would like to:
- bind the the formview to an instance of the strongly typed datatable, and then save the dt to a session object without interacting with the actual database
- load forms on subsequent pages from the dt in session
- ultimately save the dt info to an actual database table on the third page
I've read some solutions where a custom class is created, but to me this seems like almost as much work as wiring up the form field to the table columns manually in code.
View 1 Replies
Feb 18, 2010
I have a DetailsView (DV) control, an ObjectDataSource (ODS) control, and a button on a page. I have 2 classes in the App_Code directory (Customer and CustomerDAO). The DAO class provides static methods for the ODS control and simply hack values in (ie...no real database selects/updates). The Customer class has 2 properties (Id and Name) and a default constructor. The page takes an ID on the querystring and determines if the DV control is in insert or edit mode. If in edit mode, it sets the SelectParameter on the ODS (id field), calls ODS.Select(), and then calls DV.DataBind(). The existing (although fake) customer is loaded and display properly when this happens. I then change the name of the Customer in the DV and click the Button to save the new data.
Everything seems to be wired up correctly as the UpdateMethod that is specified in the ODS control is called and succeeds (even in my real example with my database). The problem is that the BoundFields in the DV control have not been updated with the new values and therefore the existing values are updated in the database and my changes are lost. I have handled the OnUpdating event of the ODS and the values are still the old values. I have also handled the OnItemUpdating event of the DV control and the NewValues IOrderedDictionary still has the old values in it also. In looking at the MSDN article for the UpdateMethod, it states the following:
Parameter Merging
Parameters are added to the UpdateParameters collection from three sources:
From the data-bound control, at run time.
From the UpdateParameters element, declaratively.
From the Updating event handler, programmatically.
I am using the BoundField classes in my DV control so I would have assumed that the first bullet above would have handled the updating of values, but it doesn't appear to work with the way I am doing it. If I set the values explicitly in the OnUpdating event that is fired by the ODS control (the 3rd bullet) the right values are updated (again...even in my real database situation). It seems like my only issue is that the automatic binding that I expect from the DV control isn't working as I would expect it to. Here is the code that I have in my fake example:
[Code]....
View 7 Replies
Apr 1, 2011
My Grid is bound to a collection type datasource. When I try to sort the Columns in the Grid I get Javascript error saying sorting event not implemented. Why is the default inbuilt sort functionality not working which worked fine when I directly used a sqlDataSource using smart tag. Do I have to write some code to achieve sorting ?
View 1 Replies
Apr 29, 2010
[Code]....
[Code]....
[Code]....
[Code]....
Given the above scenario, I would have thought that submitting the form with a blank ProductId would have been fine because I didn't decorate the ProductId property with [Required]. However I get the error message "The ProductId field is required".
Is there any way to make an Integer property on the model not required?
View 2 Replies
Aug 14, 2010
A have a custom object - Person in my cs-file and I want to Bind the property Firstname from Person to my textbox txtFirstname in my aspx-file but I cant seem to make it work.
I usually work with webcontrols so its very rare that I get out of my cs-file and use the aspx-file. I can solve my problem by letting my cs-file update the Text-property on my TextBox - but I dont want that I have declared my Person object as protected in my cs-file like this
protected Person myPerson = new Person { Firstname = "Testname" }; and my aspx-file looks like this
<asp:TextBox ID="txtFirstname" runat="server" Text='<%# Bind("myPerson.Firstname")%>'></asp:TextBox>
I get nothing in my textbox and I want to use this method to update the text-property for a change - you know just to learn some new and not getting stocked in the cs-file all the time.
View 14 Replies
Mar 4, 2011
What's the difference between binding for example a column called ("Name") in both cases ? and is there's any performance difference ?1- Assigning the data in the mark-up
<asp:Label ID="Name_Lbl" runat="server" Text='<%# Eval("Name") %>' ></asp:Label>
2- defining a control object for every control inside the repeater ItemTemplate and find it and then assign the data in the column "Name" to ite.Item.FindControl("Name_Lbl")
View 2 Replies