I am trying to convert my existing ASP.NET application to MVC 3 Razor. I use a lot of updatepanels, and I do conditional updates at the code behind using MyUpdatePanel.Update().
I am not finding this functionality with MVC 3. I can see a lot of blogposts talking about jQuery and how to use it to achieve the same, but I want to render other partialviews from my action conditionally. Is it possible to achieve it?
The way you'd work with Ajax in ASP.NET MVC is completely different from the ASP.NET way (i.e., Ajax toolkit with server-side controls such as UpdatePanel).
ASP.NET MVC is more basic and therefore more work. You handle Ajax calls on the client side using a library such as jQuery, and on the server side you implement a controller with Ajax methods.
Have a look at http://sweettam.blogspot.com/2011/06/aspnet-mvc-3-ajax-part-i.html.
Related
I'm using microsoft ajax and ajax.beginform.
It's working great for model binding my partial view, but I need to conditionally disable some of the buttons in my form itself depending on what comes back from the server.
How can I go about this without using JQuery?
Have you thought instead about using two separate views instead, and have your conditional logic in your controller determine which view to display.
I read that there aren't events in ASP.Net MVC.
However, I added button and when I double click it a buttonClick event was made.
So, are there events in Asp.Net MVC or not?
That is because you are using the webforms view engine. This view engine includes all the page life cycle stuff from the webforms framework. That means that you can, theoretically, use anything from webforms in asp.net mvc if you are using the webforms view engine. However, I'd strongly suggest that you don't do that. You will miss out on all the advantages with asp.net mvc and you'd be better of just using webforms in the first place.
If you are new to asp.net mvc I'd suggest that you'd use another viewengine instead as that will help you learn the framework a lot better and faster. There is a viewengine from Microsoft called Razor that you could start with.
If you're seeing a buttonClick event handler created when you double-click a button, you are likely attempting to use the Button server control. Instead you should simply include an <input type="submit" value="Button Text" /> element within a <form>. The form's action will result in the controller's action method being called on the subsequent post request.
I highly suggest that you do some do some research on ASP.NET MVC. There are several good resources, but here's a short introductory video to start with:
http://www.asp.net/mvc/videos/mvc-2/how-do-i/5-minute-introduction-to-aspnet-mvc
There are not server control events like there are in webforms. There are jQuery and javascript events that can happen in the HTML/DOM though.
If you double clicked a button on a designer canvas in visual studio, and it created a button click method in another file with a signature like public void MyEvent(EventArgs e), then you are not working with an MVC project.
I am coming up to speed on modifying an application built in EXT,and I would like to use an MVC pattern with the overall architecture. Could someone point out how I can load views dynamically in EXT? For instance, to make a blind call to a controller that will return some kind of view that could be html, a grid, a window, etc...
I'm open to a javascript only solution, or one that calls and retrieves views from asp.net mvc.
thanks
In ASP.NET webforms I used to write AJAX apps where the client would communicate to the server using web services or page methods and JSON.
I'm new to ASP.NET MVC and have found that one could use web services or controller actions that use JSON. Are there other options? Should I use web services or controller actions and why?
Most MVC apps use controller actions for Ajax actions.
I think the "why" is that you're leveraging your skillset and the MVC infrastructure. Everything you're doing in the app is following the MVC model, why not drop Ajax into it as well? It's just a very natural pattern.
On the server, I often find myself forgetting if an action is Ajax invoked or not. I think this is a very good thing. The method of invoking the action is a separate concern from what the action does. This is particularly true, when you're using progressive enhancement (Ajax for Javascript enabled, http post for non-js). Then the pattern looks something like below. I really like that I can forget about the communication mechanism and focus on what my app is supposed to do.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MyProgressiveEnhancedAction(FormCollection form)
{
// Handle Html Post
if (!Request.IsAjaxRequest())
return ActionViaHtmlPost();
// Ajax Invocation
...
When I'm using this pattern I often find that I have a little bit of glue to abstract Ajax vs. Post and the rest (model, domain interactions, etc.) are common.
I am looking to implement a live search in my MVC app similar to this site when you type in a question and results come up that are similar or like the search on http://www.krop.com/
I have the search code all working and results updated. I just need to know how to add the AJAX to the MVC framework (I know this site was built using it) so that when I type the results are updated.
I had this all working in normal ASP.NET Forms app.
what you need to do it attach to Jquery onchage event handler, and then call some ajax method of jquery ($.load , $.ajax etc...) and the information from a specified controller. asp.net mvc controller can return json results so you can later manipulate it in your javascript code.
if you have any other questions go ahead and ask.
An ASP.NET MVC site will have AJAX and JQuery available by default.
Mike Bosch's Blog can give you some pointers on this