MVC :: How To Handle UnauthorizedRequest By Ajax Post
Jan 23, 2011
I handle unauthorized request with custom code. Problem is that after calling HandleUnauthorizedRequest method, Application_Error is called with Server.GetLastError() exception "Server cannot set content type after HTTP headers have been sent." .
I debug for a while and no clue. Here is my code.
When I debug the call stack is:
AuthorizeCore() -> HandleUnauthorizedRequest() -> Application_Error() -> javascript error in MicrosoftAjax.js
[Code]....
-- javascript code
function RemoveQuoteFromThemePageComplete(content) {
var JsonActionResult = content.get_response().get_object();
if (JsonActionResult.ContentType == "javascript") {
eval(JsonActionResult.Data);
}
if (JsonActionResult.Success) {
$.fx.off = false;
var sayingID = JsonActionResult.Data;
$("#saying-id-" + sayingID).fadeOut("slow", function () {
$(this).parent().remove();
});
}
}
I've seen a good few questions like this around but havnt actually come across any articles with the answer (maybe just been unlucky with my research!).
Basically I'm looking to have say 3 links (or buttons) on a page, which in turn will dynamically load a specific user control into an update panel with AJAX.
Then I would like the usercontrol loaded to be capable of handling postback within the update panel (basically no page refreshes) to do its processing and return output.
Does anyone have any pointers to articles/blogs covering this?
I've seen many but non covered handling postbacks from the user control or handling the postbacks within the update panel.
There are a lot of articles devoted to working with data in MVC, and nothing about MVC 2.So my question is: what is the proper way to handle POST-query and validate it.Assume we have 2 actions. Both of them operates over the same entity, but each action has its own separated set of object properties that should be bound in automatic manner. For example:
Action "A" should bind only "Name" property of object, taken from POST-request Action "B" should bind only "Date" property of object, taken from POST-request
As far as I understand - we cannot use Bind attribute in this case.So - what are the best practices in MVC2 to handle POST-data and probably validate it?UPD:After Actions performed - additional logic will be applied to the objects so they become valid and ready to store in persistent layer. For action "A" - it will be setting up Date to current date.
I have an asp.net application in which I have a parent form and in that on load I am adding sub forms dynamically having a submit image button..
When I am clicking the button of one form then I am able to read the hidden variables using request under parent form .But on clicking the second button the hidden variables of parent form are having null value although i have assign the value to them using context variables.
how can i handle mulitple form action for same page
I have two Repeater controls, each hosted in a user control. Both user controls are contained in the same aspx page. Only one User Control is visible at any one time. The repeaters are comprised of checkboxes, and text boxes for user input.
The aspx page is configured with an Ajax ScriptManager; and contains several Ajax UpdatePanels. These UpdatePanels result in partial page post backs when text is changed in a textbox control in controls on the aspx page (this is not the behaviour for the Repeaters in the User Controls). Through use of several AsyncPostBackTriggers, various controls contained in the other UpdatePanels on the page have their content refreshed in response to the partial page post backs they are configured be notified about.
Depending on a radio button group selection, I set the visible property to true or false - as appropriate for the User control containing a repeater control. The Repeater control is then populated with data using databinding. All of this works.
However, when the Submit button is clicked, the Repeater control contains no data.
Given that I am not dynamically adding the Controls containing the Repeater controls (but using Visible true / false). I would have thought that the State of the fields and the data in the visible control would be preserved during the post back.
The User Controls are contained within the UpdatePanel that contains the Submit Button.
I have explicitly Enabled View state without any effect.
Am I correct in assuming that I should not have to do any explicit handling of data changes the user makes (via client side script and manipulation of an Data Structure Representing the Repeater Data); and the View State should maintain the data I need to access on the server when submitted?
I do not believe that it is the User Control visible state changes that are causing the issue because when the page is initially loaded on of the User controls is populated with dummy rows (so it displays).
I am suspicious that because the visible state of the controls is changed during partial page post back, that the Page View State ends up with no knowledge of the User Control and therefore cannot track its data (or changes).
I am in the process of putting a new site together which will make use of AJAX to pull through page content should the user have javascript enabled.
So, I am in the situation whereby every Action Method requires a check to see if the request was through AJAX or not, which is straightforward. If the request was through AJAX then I can return a partialview, if not then a full view can be returned.
With this pattern though, I'll need to create a View and a PartialView for every page on the site. The only real difference between them is going to the inclusion of the masterpage.
Am I missing a trick here is is this doubling up of views the only way to go?
I had a page that could get accessed through /site/test. Somewhere in my JS I would add a hash to the url like so #/site/test. JS would then watch for any hash changes and load the partial views as needed. If JS was not available though, an entire view would need to be returned.
So for each page I would need the view, which would then include a call to RenderPartial which would load up the partial view which would actually contain the page content. So, for every page there are two files. It just seems there should be a cleaner way of doing this.
This is sort of a continuation of a previous thread: View thread
The requirement I have is to be able to have a popup form that shows detailed data on a facility. This would be available on various pages of the website where the user may want to drill down and see detailed information on a facility. We also want to allow the user to update the data on the facility if so desired. I have the code working to show the popup form and get the html for the popup from a view. Right now I'm setting the values of the input boxes using razor code that accesses the @model object. That's about as far as I've gotten.
Where I'm struggling is:
1. How to tie the data in the inputs back to the view model. 2. How to write the ajax code to write the data back to the server. I tried using a standard form, but that redirects the original page that popped up the form. I want to leave that page alone and just submit the data back to the server and close the popup.
Now my dev lead wants us to use the dojo toolkit for our javascript library. That would be OK if I already knew what I was doing with regard to web development, but I don't - and documentation is just not very good with regard to dojo. I'm still trying to figure out html and mvc, so I thought I'd see if I can get this scheme working with some other javascript library first, and then see about switching it over to dojo.
I've read some about knockout and jquery, but with everything being so new to me it's hard to get all this to gel in my head, and I'm not sure about my design. I've read some about mvc's built in ajax tools, but so far all I'm seeing is stuff related to getting data and displaying it - not about submitting data.
I'd like to be able to send the data back to the server in the same object structure that I extracted it with - something that matches the model. I think this is doable, but I'm not sure - and the 'how' of it is escaping me at this point.
I searched google and found asynchronise post back trigger is used if we want update panel to post back on some event of control if it is out side the update panel. Than what is purpose of post back trigger ?
I'm making an ajax call using jquery to an asp.net mvc controller action:
[AcceptVerbs(HttpVerbs.Post)] public ActionResult GetWeek(string startDay) { var daysOfWeek = CompanyUtility.GetWeek(User.Company.Id, startDay); return Json(daysOfWeek); }
When session times out, this call will fail, as the User object is stored in session. I created a custom authorize attribute in order to check if session was lost and redirect to the login page.
How do you handle ajax requests when user is not authenticated?
Someone enters the page, leaves room for an hour, returns, adds comment on the page that goes throuh ajax using jQuery ($.post). Since he is not authenticated, method return RedirectToRoute result (redirects to login page). What do you do with it? How do you handle it on client side and how do you handle it in controller?
I really want to switch over to ajax, but i can't seem to get my error handlling perfect. If i can't handle errors correctly, I just can't use it. What I really want to happen is to do a full refresh of the Top Frame. How I normally do this is by a similar call to Response.Write(<script>top.location.href = ""</script>). I was currently doing this in Global.asax. This becomes a problem when I error out in an AJAX postback. I've also noticed that There is an AsycPostbackErrorHandler you can attach to the ScriptManager. This is all find an dandy, but it will still hit my Global.asax Application_Error Event.
I am honestly just not sure how to handle this.
As I said, the result I want is....To Reload the Top Frame with some Error Message...whether I have to do some weird redirection or whatever. My problem lies specifically with the Global.asax file.
i'm using asp.net 2.0 form with ajax. i have an ihhtpmodule which can thrown an exception at Application_EndRequest step. my problem is that if this happen in an async postback (i mean a postback of an update panel) i can't manage the exception (with manage i mean set a custom error message server-side) becouse it's too late for the error handler of the ScriptManager.
(the alert will print a message as:
Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details: Error parsing near 'MyButt" />
|<html> <head>)
at the moment my idea is to clear the response in the module and find a way to use the scriptmanager to send the correctly response of an error/exception. it's this possible? or samebody has another option of how to manage this case? note:i can't edit the aspx to manage this client client side with custom javascript
My web app is using a sliderextender to allow the user to change the distance. After the slider handle is moved and the mouse button is release, I would like to call a function to query the results and rebind my datalist.
I'm using a reorderlist (Ajax Control Toolkit Release 4.1.40412.2) inside a scrolling div (class="reorderListDemo" style="overflow:scroll; height:225px; width:1300px; table-layout:fixed; text-align:left;"). When the height of the reorderlist is greater than the height of the div, the div will automatically have a vertical scrollbar. The problem is that when i scroll down to drag an item from the bottom of the reorderlist, the reorderlist does not work properly. The drag image and the drop target does not correspond to the item i want to move.I've attached a copy of my css file:
Is there any way to handle clientside events for Ajax Control Toolkit controls? for example, is there any way to handle HoverMenuExtender's onmouseover event, make some operations, and let the control to continue it's execution?
I had been created some dynamic radio buttons in a loop inside a dinamy table which is inside an UpdatePanel , but i can not handle the events my code is below:
public void MetodoCreacion() { RadioButton RBtn = null; Table table = new Table(); TableRow row = null; TableCell cell = null; for (int i = 0; i < 5; i++) { row = new TableRow(); cell = new TableCell(); RBtn = new RadioButton(); RBtn.ID = "RBGN_" + i.ToString(); RBtn.GroupName = "RBGN1"; RBtn.Text = "Opcion " + i.ToString(); RBtn.CheckedChanged += new EventHandler(RBtn_CheckedChanged); RBtn.AutoPostBack = true; cell.Controls.Add(RBtn); row.Controls.Add(cell); table.Controls.Add(row); } UpdatePanel1_UpdatePanelAnimationExtender.Controls .Add(table); } public void RBtn_CheckedChanged (object sender, EventArgs e) { Label1.Text = ((RadioButton)sender).ID; }
After wading through quite a few articles on creating modal forms (using partial views and jquery) I got things working fine for my login....as long as you enter a valid login though!
What I did:
Created a partial view containing my login form.
In my action controller, the get action just return a PartialViewResult, which get dealt with by a bit of jQuery in my master:[Code]....
Like I said this works fine. Now the post action of my login check if it's a valid login, and if so send the user to the passed returnurl or the home page.
However, if the validation fails, I now return the partial view again, which work , but the partial get displayed by itself instead of rendering in the modal form that was opened by jquery.
I'm trying to use Ajax.BeginForm() to POST A Json result from my controller (I'm using MVC3). When the Json result is called it should be sent to a javascript function and extract the object using:
[Code]....
View
[Code]....
The strange thing is that the exactly same code works in MVC2 - Is this a bug, or have I forgot something?
the jquery is embedded in an .aspx page (a language i'm not familiar with) but is posting to a php script. i'm receiving emails properly but there is no data inside. am i missing something? i tried to bypass the variables in this example, but its still not working.
I have a form with three filed name city and relation.relation filed is a dropdown and on the selection of relation i have to display list of users in grid.I want here to use Ajax or Jquery so that when i select relation not whole page will post to server but only relation and could display list of users in grid.
inside Html Table i have all these fileds( Name,City and Relation).