MVC :: Controller.UpdateModel Breaking Change On Empty Strings?
Apr 22, 2010
I have just upgraded a project from MVC 1 to 2 and I have come across an issue with fields updated via UpdateModel which contain an emtpy string.
In MVC 1 the associated property would be set to String.Emtpy or "", but in MVC 2 it's set to null. This is causing me all kinds of problems
View 1 Replies
Similar Messages:
Apr 22, 2010
I have just upgraded a large project to MVC 2 (50+ controllers) and whilst the project builds fine I am having issues in several places because it looks like the way the Controller.UpdateModel method handles emtpy strings has changed.
In MVC 1 it set the associated property to an empty string but in MVC2 it's setting it to null.
View 2 Replies
Sep 22, 2010
Trying to get UpdateModel to work for my User. The User class has basic string properties like CompanyName, FirstName, LastName, etc so nothing exotic. Here is the header for my view:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Public.Master" Inherits="System.Web.Mvc.ViewPage<User>" %>
After they submit, in my controller, the code looks like this:
[HttpPost]
public ActionResult Edit(string id, FormCollection collection)
{
[code]...
View 2 Replies
Apr 8, 2010
This is probably something silly I'm missing but I'm definitely lost. I'm using .NET 4 RC and VS 2010. This is also my first attempt to use UpdateModel in .NET 4, but every time I call it, I get an exception saying Value cannont be null or empty. I've got a simple ViewModel called LogOnModel:
[Code]....
My view uses the new strongly typed helpers in MVC2 to generate a textbox for username and one for the password. When I look at FormCollection in my controller method, I see values for both coming through.
And last but not least, here's are post controller methods:
[Code]....
why UpdateModel would be throwing this exception?
View 4 Replies
Jan 12, 2010
I have a view model class that looks something like this
public class ViewModel
{
public string Name { get; set; }
public IList<SubViewModel> Subs { get; set; }
}
[code]...
Now when I call try update model it replaces the "Subs" list with a new one rather than just updating the IsSet property at the correct index.
View 1 Replies
Apr 1, 2010
I had the same problem and used this posted to fix some of it.Now I had it on
SqlDataSource1.SelectParameters.Add("dateListedSince", TypeCode.DateTime, Date.Now.AddDays(-30))
any ideas how to fix that?
View 2 Replies
Jan 20, 2011
I have an app I am transitioning to MVC3 to see what the upgrade path is essentially. I've hit a snag. I believe I've run into a change that may be due to the changes for Dependency Injection in action filter attributes, but I have been unable to track down the cause, and the "correct" solution.This project uses StructureMap and NHibernate. The NHibernate session is started at the beginning of each request, and ends at the end of each request, thanks to a small module. This is just to give an idea of the stack involved...o I have a few custom Authorize attributes (Inheriting from AuthorizeAttribute) that perform some more complicated authorization logic for specific actions that they decorate. Part of their functionality involves using two repositories which they must either (a) have injected, or (b) get from the StructureMap ObjectFactory themselves. In MVC2 I was using option b, so that the CONSTRUCTOR of the attribute looked like this:
[Code]....
This worked fine, as in MVC2 the constructor was called each time the attribute was evaluated. This BREAKS in MVC3, where it would appear that this is no longer the case. Due to this apparent change, the FIRST time this attribute is evaluated, it runs fine, but each subsequent time, any calls in the repositories fails because it claims the NHibernate Session object hasn't been started! The reason being, as far as I can tell, that the CustomAuthorizeAttribute is created once, and then held in whatever state it exists in at that point for the lifetime of the application... Which means that the dependencies inside of it (Which SHOULD go out of scope at the end of each request, and be reinstantiated / fetched at the beginning of subsequent requests), are instead persisting with it becoming stale after the first evaluation.After banging my head against the desk for a few hours, I realized that simply moving these calls to the ObjectFactory into the AutorizeCore method made everything work again.Now, all of this was of course, a hack, because there wasn't a good easy to do real dependency injection into attributes in MVC2. I hear that is changed in MVC3, and I am wondering if this behavior is in response this change, and if so, what do I need to do to make this work?
View 3 Replies
Apr 2, 2010
Using MVC 2 and VS 2010 RC.I have a varchar database column set to NOT NULL and I use the Entity Framework to bind the column to a textbox. I want a user to be able to leave the textbox blank and have an empty string inserted into the database column. However, MVC is trying to set the property to null during the Create postback, which causes ModelState.IsValid to be false and subsequently the validation UI is triggered with the message "The value '' is invalid".Here is the model:
[Code]....
The controller:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Candidate c )
{
if (ModelState.IsValid) // This is false when the textbox is left blank.
[code]...
View 3 Replies
Jan 19, 2010
In this test application, I am filtering by two ControlParameters. As you can see in the first codeblock, both parameters have a default value of %. This code works great. However, in the second code block, please note that the Default Values are eliminated. The second code block works as long as neither Textbox's text is blank. For some reason, when .NET evaluates the filter expression and inserts "" into the expression, it seems to bug out and case none of my results to be filtered.
I am able to verify this behavior by setting the defaultvalue="" for each ControlParameter.Obviously I have found a workaround, but I would like to know why the FilterExpression breaks down when an empty string is provided.
Code Block 1:
<asp:SqlDataSource ID="Customer_Data" runat="server"
ConnectionString='<%$ ConnectionStrings:connectionString %>'
SelectCommand="SELECT Station, StoreFront, CustomerID as CustID FROM vStations" [code]...
View 1 Replies
Oct 16, 2010
I'm trying to write a regular expression that allows positive & negative floating point numbers, but doesn't allow empty strings and characters.I have managed to create this
[Code]....
but it allows empty strings and I can't figure out how to add [+-].
My program is a web app which asks the user to input a temperature.
View 2 Replies
Jan 6, 2010
i am using a search box for my application which returns a dataset. however when i click on the search button it returns an empty table result. how could i add validation so it doesnt accept empty strings or numbers.
View 9 Replies
Aug 20, 2010
What is the proper way to check for null or empty strings on dynamic objects? This is the only solution I've found so far:
if (admin.PasswordHash.GetType() == typeof(DBNull) || admin.PasswordHash == string.Empty)
If the field is null, the object returned is DBNull.Value, but if the field is empty string, it's return as a System.String object. This makes it impossible to do regular "admin.PasswordHash == DBNull.Value" check, as that will fail whenever the field has been set to empty string. Is my example the right (and only) way to go?
View 5 Replies
Sep 30, 2010
we have a AutoGenerateColumns-enabled WmxDataGrid in which we are able to update table rows in a DataBase connected with a SqlDataSource.
Each time we clear a field an empty string is written to the database where we want to write DBNull values.
At the moment we generate the update string via UPDATE... SET.. and the SQL Server function NULLIF(value, '').
Works proper but when I want to add the values to e.NewValues in BeginUpdate event I'm not able to read the values from the auto generated text boxes. How do I do that? Is there an easier way to automatically convert empty strings to NULL values?
View 2 Replies
Jan 8, 2010
By default ASP.NET MVC uses ContentResult for controller method that return result not inherited from actionresult type. That is why if we will return some poco entity it will be only its type name.Could I overload something in controller to make it return jsonresult by default.Example:// return json product representation instead of product typename
public MyController: Controller
{
public Product MyAction()
{
return new Product { Name = "Foo", ID = 1 };
[code]...
View 1 Replies
Nov 29, 2010
Is it possible to change Properties of ViewData.ModelMetadata in Controller?. For example, can I do the following to change the display information of the LogOnModel:
[Code]....
When I do that there is no errors but DisplayName is not change. I'm trying to localize strings to different languages and also to make some attributes of the model different depending on users roles.
View 7 Replies
Aug 5, 2010
I have a questions..
when initially page load I have two radio button in the page..
Add
Edit
when I select Add radio button I need to go the controller Action Add
$("#Add").change(function () {
// what should I write here to hit the controller?
});
View 4 Replies
Jan 24, 2016
Is there any way to convert our class to controller in asp.net MVC ....
View 1 Replies
Dec 28, 2010
UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, that follows the UP(Unified Process). It uses a Grasp Controller pattern to interact with domain classes by some methods like NewSale(), AddNewItemToSale() and CloseSale. In windows form, I can instantiate a object of this class in the UI and then use its methods to perform the actions. This works well in Client apps, but when I use asp.net mvc, I cannot find a way to instantiate an object (one for each user) that was always visible for a Controller (MVC). I cannot insert as an attribute inside Controller because it always create a new one.
View 1 Replies
Aug 11, 2010
I have a requirement whereby I need to be able to change the controller being used based upon a parameter. I am creating an application that needs to be dynamic enough to be able to change controllers on the fly. Let me explain further;
When the application starts a dictionary of custom controller names is loaded with a controller name as the key and a custom controller name as the value. This will be help in the application scope.
When a request is made I need to access the requested controller name, use that name and check to see if it matches a key in my controller dictionary and if so, replace the requested controller name with the custom controller name from the dictionary.
example;
My dictionary will contain data as follows
Key: 'Home', Value: 'Home_IN'
Key: 'Customer', Value: 'Customer_BE'
Now, the following request is made 'User/Edit/1'. Does the controller name exist in the dictionary? No, continue with original request.
Now, the following request is made 'Home/Details/2'. Does the controller name exist in the dictionary? Yes, replace the original controller name 'Home' withe custom controller name 'Home_IN' so changing the requested URL to be 'Home_IN/Details/2'.
Does this make sense?
My problem here is knowing exactly where in the request cycle I need to do this?
I am assuming I need to create my own custom controller factory?
View 7 Replies
Mar 9, 2010
I have been trying to develop edit functionality for a table in database using LINQ to SQL classes (.dbml). Thoiugh updatmodel does not fail, it still does not update the database. I have tried several different things with no resort. I have something going live in a day or so, Below is my code for controller class in MVC 1.1
//Homecontroller.cs
//Overload edit view for postback
[AcceptVerbs(HttpVerbs.Post)]
public object Edit(Guid id, FormCollection form)
{
//Get the row ID which is being edited
var Weballoc = db.WebAllocationImports.Single(w => w.OGReference == id);
try
{
// Weballoc.Side = Request.Form["Side"].ToString();
// Weballoc.Commission = Convert.ToDouble(Request.Form["Commission"]);
UpdateModel(Weballoc, new[] { "ClientSubAccount", "Quantity", "TradeDate", "SecurityID", "Side", "Commission", "NetAmount", "TradeID", "Price" });
db.SubmitChanges();
}
catch (Exception ex)
{
}
return View("ShowCGMAllocations",allocation);
The following is a sample of my edit.aspx view
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="ClientSubAccount">ClientSubAccount:</label>
<%= Html.TextBox("ClientSubAccount", Model.ClientSubAccount) %>
<%= Html.ValidationMessage("ClientSubAccount", "*") %>
</p>
}
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
<% } %>
View 7 Replies
Mar 11, 2011
I've been struggling with this issue for a few days now and I'm still not able to figure it out. I've created a sample project to hopefully help figure this issue out. The main issue is when I load a user from my context and perform an UpdateModel() on this object it seems to delete my entity references and I get null references in child objects. Here is the error: The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deletedHere is the link to the code:
Here (line 42, causes the error to happen)
View 2 Replies
May 1, 2010
this is the code i am using for update model
[Code]....
on the line 2 i set new value to OrderDate.but after this step OrderDate get value of text box in view.the value of text box is shamsi date and on line 2 i convert that date to miladi date.why OrderDate get shamsi date?
View 2 Replies
Jan 13, 2011
[Code]....
for some reason, when oldIndex is not 0, and the first "for" loop is running, "UpdateModel" is trying to change the ID field instead of the Index field.if it's 0, and only the second "for" is running all goes well.I'm trying to figure out what's the diference between the loops, and i don't seem to get it?
View 3 Replies
May 4, 2010
as the behaviour of the UpdateModel<T> changed in MVC 2 (RTM)? Since then I have the following problem when UpdateModel is called:UpdateModel<T1>(record, properties);record is typeof(Jumbo.Juist.Models.Bezorging) and properties is a string[] containing "Winkelnummer" and "OudRoutenummer".This now fails, because a get-property is being accessed: BerekendeAankomstTijd. In the past, it didn't fail. IMHO, this validation should be skipped, because it's only a getter (and thus/also not included in the string[] of properties to update)
View 14 Replies
Jan 14, 2010
Exception Details: System.ArgumentException: Value cannot be null or empty.Parameter name: nameI am following the example in the ASP.NET MVC Framework unleashed page229.
View 4 Replies