MVC :: TryUpdateModel Returns True But Does Nothing?
Jan 16, 2011
I have a strongly typed Edit view that expects a viewmodel class. On its post action, I want it to use TryUpdateModel to update the database with the new info. When debugging, TryUpdateModel returns true, but when I look in the database, nothing happened.
This is the controller Action
[Code]....
why this doesn't persist the changes back to the database?
This is driving me crazy. I am using CKEditor so I can not use RFVs. I have succssfully used the combo of onClick and onClientClick for confirmation but when I try to use it with form validating JS it returns true each time and does the postback.
I have a page where, when the user has successfully logged in, I store some values in the session.
I then use these values to load an application list page. This page is automatically refreshed after 20.1 minutes, with the sessionstate timeout and forms timeout in web.config set to 20 minutes (with sliding expiration). This means, if the user does not use any page for more than 20 minutes, he is timed out.
My problem is that the User.Identity.IsAuthenticated sometimes returns true, when the session has expired.
I am new to web service. I am trying to connection to an oracle database with 2 input parameters. The web service works fine in the VS2010 environment but when i publish it on to my local machine IIS or on the test web server I do not get a result set back. I get this:
I have a view that displays a list of entities; I need to provide user a way to bulk-edit some properties of these entities. To do that I generate a form like the following:[Code]....
Next, I use javascript to submit user-entered values:[Code]....
Submitted data is processed by the following action:
[Code]....
Quantity and Price properties of the entities in the collection are updated as desired. However, all other properties are reset to null. AFAI, specifying the properties in "excludeProperties" list should prevent them from being changed by TryUpdateModel, right? What am I missing here?
I have following problem: in the Controller I call TryUpdateModel to send the changes made in the form back to the database. Then I save the entity, but no changes to database are made.
Here is the code from Controller:
[Code]....
Then the changes made to database. (ChangingSet have then also pending changes).
I am following though the examples in Professional ASP.Net MVC 2 and one of the examples doesn't work for me.
[HttpPost] public ActionResult Edit (int id, FormCollection collection) { Dinner dinner = dinnerRepository.GetDinner(id); if (TryUpdateModel(dinner)) { dinnerRepository.Save(); return RedirectToAction("Details", new { id = dinner.DinnerID }); } return View(new DinnerFormViewModel(dinner)); }
I understand that it's suppose to take the values from the FormCollection, and then update the dinner object with it, bit I don't see the collection get referenced anywhere.
I am trying to bind the dynamic object using TryUpdateModel(); but it works for first class member but it is not updating the properties of object which are referenced to model.
i have an entity called User with 2 properties called UserName and Role (which is a reference to another entity called Role). I'm trying to update the UserName and RoleID from a form which is posted back. Within my postback action i have the following code:
var user = new User();
TryUpdateModel(user, "User", new string[] { "UserName, Role.RoleID" });
TryUpdateModel(user, new string[] { "User.UserName, User.Role.RoleID" });
However none of these updates the Role.RoleID property. If i try the following:
TryUpdateModel(user, "User", new string[] { "UserName, Role" });
TryUpdateModel(user);
The RoleID is updated but the RoleName property is validated aswell. That's why i'm trying to be more specific on which properties to update but i can't get any of the first examples to work.
It took me a little while to figure this out, but the AllowPaging="true" on the FormView seems to be the culprit. I don't have much experience paging from a FormView, but for this requirement the customers wants this kind of UI.I have a FormView with DefaultMode="Edit", which is bound to an EntityDataSource. One of the entity's properties, "ExternalID", determines whether some of the other properties in the entity are read-only. For example, if IsExternal==null, the FirstName, LastName, and Email fields should be rendered as TextBoxes. If IsExternal!=null, the 3 properties should be rendered in Label controls.
Since I upgraded from MVC 2 to MVC 3 RC, using TryUpdateModel causes a NullReferenceException. This problem only occurs when running my action method as part of a unit test. Running it on the actual server works as expected. Here's a stack trace of the exception:
System.NullReferenceException: Object reference not set to an instance of an object. at System.Web.Mvc.JsonValueProviderFactory.GetValueProvider(ControllerContext controllerContext) at System.Web.Mvc.ValueProviderFactoryCollection.<>c_DisplayClassc.b_7(ValueProviderFactory factory) at System.Linq.Enumerable.WhereSelectEnumerableIterator[Code].... 2.MoveNext() at System.Collections.Generic.List[Code].... 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext controllerContext) at System.Web.Mvc.Controller.TryUpdateModel[TModel](TModel model, String prefix) ... my own code from here on....
In case it matters, my controller has the following signature:
[Code]....
My guess is that this has to do with the new way DI works in MVC3, but I can't figure out what I'm doing wrong. Perhaps there is something in terms of DI setup that is required in MVC 3, but wasn't required in MVC 2?
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.
I have an approve button.on clicking on this button it should show that an inactive value is present .Onclicking yes conformation it should save the data or else clicking on no conformation should return false; how i will do that?After alert it always submit the data.
string otherAffiliateName = txtRequestedAffiliate.Text; int inActiveAffiliates = new BLRating().InActiveAAffiliateChecking(otherAffiliateName); if (inActiveAffiliates > 0)
[code]...
This is the code i used.how i wiil stay back on Confirm 'no' click?
In the notes for Step 1 in the "How To: Prevent Cross-Site Scripting in ASP.NET" it is stated that you should "not rely on ASP.NET request validation. Treat it as an extra precautionary measure in addition to your own input validation."
Using data annotations for asp.net MVC, I can enforce range, regular expressions, required, stringlength, etc.. However, I have boolean property "SignedDocument" that I want to enforce its set to true? Is this possible in data annotation?Example:
I've never fully understood this property of the IHttpHandler. It is a property that you have to set when you implement the interface. I've assumed that setting it to true would be better for performance, but I am not sure what the negative side effects might be. Should I return true or false?
If I use html.beginform on my partial view, the attributes get rendered. If I remove html.beginform and instead use jQuery to load my partial view into a dialog, the validation attributes aren't firing even after I've called $.validator.unobtrusive.parse(selector) because the attributes are not getting added to the html. Im using Html.EditorFor, and the attributes don't show up unless I put an Html.BeginForm around it.How can I force the attributes (they are [Required] on my model)?
I have a call to a function in my business logic area. It should be returning a true.
[URL]
This url above is the culprit. The code doesn't seem to like the .asp type of file. I wonder why this is the case. I get a true response for a html or php type of file. The above returns false. Does anyone know why?
[Code]....
[Code]....
Public Shared Function MakeURL(ByVal url As String) As String Return "http://" & url.Replace("http://", "") End Function
Do I need to set EnablePageMethods to true? My jquery code,inside an asp.net tabpanel, work with and without EnablePageMethods.What the function? How should I set it?
I've been tinkering with MVC2 for a bit now and am REALLY excited about how well it works! But one thing that has come up seems simple enough to resolve but was hoping someone here had a better idea than I have.My model has some boolean fields and when I write this: <%= Html.Encode(model => model.MyBooleanField) %> it spits out True or False as expected. What I'd like to do is replace that with 'Y' or 'N'Some initial ideas I've had: use a jquery script to spin though all the elements on the page and replace True/False with Y/N but this raises performance concerns.Another idea I had was to build an extension method off the Html class to accomplish this but was hoping someone might have a better/quicker solution?