MVC :: Maintain State Across Pages ( Model Binding)?
Sep 17, 2010
i am working in creating forms based wizard application.user interface is something similar of using ASP.Net wizard control. i like to create 5,6 pages with data collection forms (each page with each section) and final confirmation page. can any one tell me better way of building it using MVC. I am not sure how to maintain state across pages ( Model binding?) .
In my Application_BeginRequest I have code that gets query string value ?c=FR or ?c=US and store it in cookies.Based on query string value I have either US or FR,locale is selected from locale table.If ?c=FR then locale will be fr-FR and if it is US then locale will be en-US.My code is below.
void Application_BeginRequest(object sender, EventArgs e) { LocalizationInfo loc = GetLocalizationInfo(); if (Request.Cookies["Localization"] == null) Response.Cookies.Add(new HttpCookie("Localization")); Response.Cookies["Localization"]["Country"] = loc.Country; CultureInfo objCI = new CultureInfo(loc.Locale); Thread.CurrentThread.CurrentCulture = objCI; Thread.CurrentThread.CurrentUICulture = objCI; } public static LocalizationInfo GetLocalizationInfo() { string countryCode = ""; string sLocale = ""; if (HttpContext.Current.Response.Cookies["Localization"]["Country"] != null) countryCode = HttpContext.Current.Response.Cookies["Localization"]["Country"]; if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["c"])) countryCode = HttpContext.Current.Request.QueryString["c"]; if (countryCode == "") countryCode = "US"; sLocale = HertzRent2Buy.DataProvider.ListData.GetLocale(countryCode); LocalizationInfo ret = new LocalizationInfo(); ret.Country = countryCode; ret.Locale = sLocale; return ret; } public struct LocalizationInfo { public string Country; public string Locale; }
Now when I run the project and in query string I set [URL] then for the very first page(home page itself) it shows me French translation,but on subsequent page,that query string parameter ?c=FR is lost and hence it shows be English translation not French translation since it does not pickup French resx file.If I manually append ?c=FR in subsequent page then it shows the French translation.Is there is way how I can make that query stringparameter available in all pages.Structure is there to hold Country and locale variables. In all pages I am calling GetLocalizationInfo() method as follow
LocalizationInfo info = some.DataProvider.Globalization.GetLocalizationInfo();
And I create instance info to pass locale and country as parameter. GetProductDetails(id,info.Country,info.locale). why my query string parameters get lost on subsequent pages.
I am working on an existing project, setup by another coder. I'm having some trouble understanding how state is being maintained between pages. There is a Class library which has some helper objects. Mostly these objects are just used for there static methods and rarely instantiated or inherited.
This is an example class I'm testing with.
public sealed class Application { public static string Test; }
Now when i run something like the following in the base class of my page, I would expect the result to be "1: 2:Test" all the time (note that "1" is empty), but strangly its only this way the first time it is run. Then every time afterwards its "1:Test 2:Test". Somehow its maintaining the state of the static variable between pages and being refreshed??
we developed two forms.asp x with Dynamic Controls,First form has one Dynamic button_Open ,this button has Click event ,through button_Open_Click event we need to open second form with dynamic controls through (window.open()),window opening but forms.asp x not displaying controls and Second form overwriting on first form ,we added code for Dynamic Controls in both pages Page_PreInit event.do the better way to maintain state of control both pages?
I am having a ASP.net application it having three pages ,page 1,page 2,page 3,when the user navigating between this pages I want to maintain the view state in page level after postbacks(i.e.) .If a user visits page 3, passing some query loads some data .then he moves to page 1 doing some entries .after that he once again moves to page 3 now I want to display the data previously available at the time he moves to page 1, same way I want to do to my three pages up to the user logging out.
I have a system that has several large objects that need to be built and populated each and every time, and these objects may be accessed quite often as well. As a strategy, caching would not be that good for me because there are potentially thousands of these objects which are fairly large. So I propose to serialize the objects to the file system and then deserialize it when I need those objects again. I have several classes that need this serialization functionality.
These objects change as well, so on the next access I check if there were any changes and then I grab only the changes and edit the object, and then reserialize the object.
My question is what is the best way to do this, since I have several classes ..
I am using a treeview in my master page and every node having link to its container page.That means click on any child node of treeview its redirect to another page by taking some value.
Now every time I click on nodes of treeview, its get collaps when child page loaded...
Now regaring maintain state of treeview across my web application...
how can i maintain state in html as i am building site which has too much pages in html i can't convert them to aspx but due to some requirements i want to maintain state of variable.
I have one web application. In that, I have two pages. One is view/edit page and another one is login page. The view/edit page contains one edit button and one login button.
First I execute view/edit page, at that time I dont want to show edit button. When user clicks login button, the page will be redirected to login page, where the user has to enter username and password. If user enters both correct, again the page will be redirected back to view/edit page. This time, the edit button has to be shown to make some modifications, since the user is authenticated.
I tried this thing by using session with cookieless. It works perfectly but some times it shows web page not available. I made session timeout 120 minutes and cookieless is true. In URL session ID also available.
So, whats the alternate way to maintain user log state or whats wrong in web.config file.
when I use Html.HiddenFor( model => model.OwnerId ) to create a hidden field, the value assigned to that field is zero. When I use <input type="hidden" value="<%: Model.OwnerId %>" /> to add the hidden field to the form, the value is assigned correctly.
Why would Html.HiddenFor( model => model.OwnerId ) not get the correct value from the Model object? Am I supposed to load model state somehow separate from returning the model object from the action method? Here is the view:
[Code]....
The Create action method is relatively straight forward.
I have created a matser page with a two radio buttons, text box and a button. Whenever user sets some values to these control and clicks the button, i will navigating him from one content page to another based on the data he has entered. The problem is after the content page load, the values selected/given in the controls(radio button, text box) are getting cleared.
I am working on FileUpload. I have sequence of forms showing in popup, In the starting form i am uploading the file and i have to get the PostedFile.InputStream at the end of the form. I am navigating the all form values until last form, but i am not able to get the PostedFile.InputStream value. Once page refreshed the fileupload control value is clearing. how can i get it until end of the form.
I have a website which contains several ajax enabled pages. I need to maintain state in each page. I have added historypoints in each page. My back button works fine as far as I am on single page. But when I visit different page and then click back button to come to original page, only the last history state for that page is loaded and all other seem to get wiped out. What I mean is, clicking back button again takes me to previous page instead of loading same page again from history point. Is there any way to maintain history points even when I visit different pages
I have to create a very simple database driven website ( for a project ) with basic features like a login system, etc. I have completed most of the basic tasks required, but there is one section that is asking me to 'Use persistence to maintain state/relationship'.
I have read a few articles and videos about persistence but I don't understand its benefits and why and how it should be used. Can anyone point me towards a site that explains how to implement state persistence in a simple way. I don't need anything advanced just a very simple way of integrating this into a very simple site to say its been done.
Is it possible to send the object to the web service and the web service returns the object?is it possible to maintain the state of the object while sending it to the user through web service?
I have a page showing user records in GridView. Users can do paging, sorting, filtering all on the page. All records inside GridView have typical edit and delete buttons. When user click Edit button I load complete record on the next page which user can edit and save. When user save record how can I send user back to the GridView page displaying the same record which user has editing. I means if I simply use Response.Redirect and send user back the page with GridView load again with first page of the grid and user can't see the same record which user has edited after moving forward few pages in the GridView.
Also when user save record on the editing page. Why user need to press browser back button twice to go back to GridView page? I think if I can create a link or button on the editing page which can send user two pages back by playing with browser history or javascript my problem can solve.
This seems like the model binding is causing me issues.Essentially I have a model called ProductOption and for the purpose of this question it has 2 fields
This is used to determine (on submit) if we are editing or adding a new option. However the Model binder in .net seems to replace .ID (Which was 0 when leaving the above get actionresult) with 1 (or the value of the id parameter in the URL)How can I stop or work around this?
ViewModel public class ProductExtraModel { //Database public int ID { get; set; } public string Name { get; set; } public int ProductID { get; set; } public ProductModel Product { get; set; } }
Have been able to get a really strange behavior in mvc 3 rc 2, where an controller action (a) in an area has a nullable enum and long as parameter and an controller action (b) (which is not placed in an area) only have nullable long.
If I compile and first surf to (a) then it works, and then surf to (b) with a number as parameter it throws exception where it seem to have tried to pass the nullable enum!
If I recompile and surf to (b) with same parameter it works, and if I surf to (a) the enum is always null.
Edit: perhaps this is a model binding bug, perhaps caused by some internal cache? Since the routes are correct but the passed arguments are not.
I have just upgraded to MVC 2.0 and I have noticed a difference in the model binding when posting a form back to an action. In MVC 1.0 if I had a posted a blank form back to my action and then looked at the populated model class my empty string values would show as empty strings, in MVC 2.0 doing the same thing and then looking at my model class shows my empty string values as null, why has this changed?