MVC :: Binder Not Being Called?
Oct 31, 2010
The following code is executed when my app starts
ModelBinders.Binders.Add(typeof(StringValidator), new StringValidatorBinder());
StringValidatorBinder implements IModelBinder and simply throws an exception on BindModel, and I have a break line on there too. So, why does the following post method set "validation" to null and not call my model binder?[HttpPost]public ActionResult Create(string code, string description, StringValidator validation) {......}
View 5 Replies
Similar Messages:
Nov 4, 2010
I have a Create ViewPage strongly-typed with a ViewModel. I link the textboxes to the ViewModels properties using the HtmlHelper. On the POST Create method I get the ViewModel by parameter. The thing is that the ViewModel's Properties are empty, as if it has just been constructed. Also, there is no way it could have those values as Properties once all the constructors initializes all the values!
View 27 Replies
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
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
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
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
Aug 14, 2010
I'm using MVC, and in the controller, I'm using a linq to objects query which returns an anonymous type:
var results = from ... select new { ... };
I then pass this information to an untyped view:
return View(results);
I try to iterate through the data in the view:
<% foreach (var entry in Model)%>
...
<%: Html.Encode(entry.MyProperty) %>
However, I get a RuntimeBinderException: 'object' does not contain a definition for 'MyProperty'. However, oddly, if I hover above entry with the mouse, it does actually have MyProperty in the popup window, and the value is what I would expect,(apparently, the Visual Studio IDE knows what type it is).I can get around this problem by using a linq query which uses an explicit type and a parameterless constructor of the form:
IQueryable<SearchResult> results = from ... select new SearchResult { ... };
and creating a view model class which encapsulates the SearchResult data, which is then returned to a strongly typed view. However, I don't understand what the problem is with the first method.
View 9 Replies
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
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
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
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
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
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
Sep 10, 2010
How can I tell from within an ASP.NET HttpHandler if it is executing because of a call to Server.Execute("myHandler.ashx")or because of the user linking directly to myHandler.ashx? (Besides using a querystring parameter).
View 2 Replies
Mar 22, 2011
i read that whenenver you call an instance of the your site the session_start is called. I am using the following code to create a visitor counter
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
Application.Add("Myvariable", 0);
}
[Code]....
Hence when I run the program the output is "User No:1"
and i copy the url to another firefox tab and paste it there the output is still the same. Isnt it suppose to increment. My session _start is not being called why ?? I was reading a tutorial in which it is being incremented.
View 2 Replies
Apr 1, 2010
found many pages of my maintence website inherits a base page which overrides InitializeCulture to customize some globalization settings. Is this method called everytime for any incoming request
View 1 Replies
Jun 9, 2010
I have an application made on asp.net mvc 2 and it is on IIS 7.5 on my pc I tried profiling it and I noticed that Application_Start gets called more than once, anybody knows why is this happening ?
View 1 Replies
Sep 2, 2010
I have two versions of a website. One runs on IIS server on a local PC, the other runs on the ASP.NET development environment included on Visual Studio (localhost). Apart from that, the file stucture of both is the same, although only the one running on IIS works properly, and this seems to be related to the fact that the IIS version calls Application_BeginRequest() where the other doesn't.
I've looked at the differences between IIS server and the ASP development environment in: [URL], and it says that IIS and the ASP development server deal with static content in that for IIS in that on IIS static content does not go through the ASP.NET runtime like it does on the dev environment (but I'm not sure exactly what this means).
I've done a number of tests involving images, etc, and have noticed that when the image is of the form:
<img src="Image/MyImage.jpg...>
the IIS server version calls Application_BeginRequest(), but the visual studio development environment version doesn't.
However, if I change the above code to use:
<img src="<%=ResolveUrl("~/Image/MyImage.jpg")%>" ...>
it will call Application_BeginRequest().
In my case, it is necessary to call Application_BeginRequest because this creates a new path and calls
RewritePath().
The problem occurs when using links such as <a href="..." ...>, because if I use static content it won't call Application_BeginRequest() and the path won't be re-written. But If I change it to href=" %=ResolveUrl("~/...")%>" (for some reason, it will only call BeginRequest() if the path begins with a tilde ~), the path is re-written incorrectly.
I'm not really sure how to find out why the IIS version is calling Application_BeginRequest() from all the time (the callstack just says "external code"), or why it is calling it whereas the local dev server version isn't.
If anybody can explain this, or knows of any sites that go into this so I can master the basics, I'd be very grateful.
View 6 Replies
Aug 11, 2010
In my office I am the only Web Developer. There are no other Web Developer.
I was confused by my co-worker programmers regarding the meaning of Code Behind. They told me there is no such Code Behind.
highlight which is CodeBehind from these 2 sets of sample coding:
these are from HTML
[code]....
Of the 2 sets of sample cpding which one is called CodeBehind ?
View 2 Replies
Oct 22, 2010
Code:
<asp:TextBox ID="TextBox1" runat="server" onKeyPress='return maxLength(this,"30");'></asp:TextBox>
Code:
function maxLength(field,maxChars)
{
alert('onKeyPress');
if(field.value.length >= maxChars) {
event.returnValue=false;
alert("more than " +maxChars + " chars");
return false;
}
}
When I Press any Character , maxLength function is not called,WHy SO?
View 5 Replies
Aug 27, 2010
The page I'm editing had three tabs, each tab contains a diffrent grid view which is populated by a search box with in the tab. Each row in the grid view has a check box. When a print button is pressed all records with a tick in the check box should be printed off. Then page then reloads but some of the content is missing due to the way the page has been coded. This is becuase some of the code is only called when the tab is clicked not on postback. Is there anyway that I change the following code so that it's called after postback? These are the functions that are causing the most problem.. I need them to be loaded for the correct tab on postback.. I can't do it for all three as the code takes forever to run in that case.
AddActionsToGridView(gvGlobal);
AddCheckboxesToGridView(gvGlobal);
{
if (tabconConsignments.ActiveTabIndex == 0)
{
dtGlobalIDConsignments = fGenerateTableSQL(astrPalletIDs, DateFrom, DateTo, ddlReqColDel.SelectedValue, "GlobalID", "", "");
//Global ID Tab
gvGlobal.DataSource = dtGlobalIDConsignments;
gvGlobal.DataBind();
//Actions
AddActionsToGridView(gvGlobal);
AddCheckboxesToGridView(gvGlobal);
}
else if (tabconConsignments.ActiveTabIndex == 1)
{
dtCreatedDateConsignments = fGenerateTableSQL(astrPalletIDs, DateFrom, DateTo, ddlReqColDel.SelectedValue, "CreatedDate", "", "");
//Created Date Tab
gvCreationDate.DataSource = dtCreatedDateConsignments;
gvCreationDate.DataBind();
tbCreationDateSearch.Text = "";
//Actions
AddActionsToGridView(gvCreationDate);
AddCheckboxesToGridView(gvCreationDate);
}
else if (tabconConsignments.ActiveTabIndex == 2)
{
dtAccountsConsignments = fGenerateTableSQL(astrPalletIDs, DateFrom, DateTo, ddlReqColDel.SelectedValue, "Account", "", "");
//Account Tab
gvAccount.DataSource = dtAccountsConsignments;
gvAccount.DataBind();
AddActionsToGridView(gvAccount);
AddCheckboxesToGridView(gvAccount);
}
if you want me to post any more code or any more info it's been a hard one for me to get my head around so I might of missed something out.
View 2 Replies
Apr 13, 2010
I made a custom handler that derives from MvcHandler. I have my routes using a custom RouteHandler that returns my new handler for GetHttpHandler(), and I override ProcessRequest() in my custom handler. The call to GetHttpHandler is triggering a breakpoint and my handler's constructor is definitely being called, but BeginProcessRequest() is being called on the base MvcHandler instead of ProcessRequest().
Why are the async methods being called when I haven't done anything to call them? I don't want asynchronous handling, and I certainly didn't do anything explicit to get it. My controllers all derive from Controller, not AsyncController.
I don't have the source code with me right now, but I can add it later if needed. I was hoping someone might know some of the reasons why BeginProcessRequest might be called when it's not wanted.
View 1 Replies
Jul 23, 2010
I've seen a few posts about Application_BeginRequest, but non seems to have my problem.
My Application_BeginRequest is being called for every image in my website.
The StaticFile Handler is enabled with * as the Path, but it's at the end of the list.
Is this the normal behaviour? Or should I add .gif, .jpg and so on on top of the list?
This is on my IIS7.5 Win7 Development Server. Didn't check it on the production server yet.
Update:
Setting runAllManagedModulesForAllRequests=false would help. But then the ASP.NET URL Mapping does not work anymore. I tried disable it just for the image directly, but that had no effect?
<location path="Resources">
<system.webServer>
<modules runAllManagedModulesForAllRequests="false">
</modules>
</system.webServer>
<location>
View 1 Replies
Feb 22, 2010
This is the setup in short. I have a big table. Everytime a cell get focus an asyncron call to the server is done (with PageMethods) and some data is returned and updates a infobox in the page.I have written code that makes it possible to navigate between cells with the arrow keyes.
The problem occurs when I shift focus fast through several cells in order to get to the cell I want. Every get-focus is executed and since the communication with the server takes about half a second it get quite irritating and not very user friendly.Ideally I would like to execute only the last focus event. But how? I cant know which event is the last one, can I?
View 2 Replies
Dec 6, 2010
I have a user control with cascading dropdownlists. When I populate the controls in the Page_Load event, the second dropdownlist has duplicate entries. These controls are inside AJAX UpdatePanels and I need to find out when DataBind is called on the second dropdownlist to see why it is being called twice.
I am using a SqlDataSource with a ControlParameter to populate the second dropdownlist, not doing it through the code behind.
Is there a window in Visual Studio 2008 that will let me see when DataBind is being called?
View 4 Replies