C# - Add JS And CSS To Layout File In MVC 3 Razor Website From Partial Views
Mar 15, 2011
Im currently using a method that looks like the following code to add script and css files to the head of the Layout file.
[Code]....
My problem is that this is a static method meaning it persists the list of stylesheets and script files.
I need to do the same thing that this does but without keeping it persistant.
I need the lists to be remade on every request since they change from page to page what the look are on that specific page.
Is it possible to clear the lists on every request prior to adding the scripts that are needed or maybe after they have been rendered out?
Update:
The reason for not using a section, RenderPartial or RenderaActions is to prevent the same stylesheet or script file to be added more than once to the Layout file.
The site im building has a Layout_.cshtml with the basic layout. This in turn is used by a View that loops through a list of items and for each item a RenderAction is called that outputs the specific partial view for that item. These partial views sometimes need to add stylesheets and scripts.
As there can be needed to add many different scripts and stylesheets from different partial views a global list for styles and scripts were the only way i thought this could be done so there is a global place to check if a script is allready added to the collection or not and then render them all at once in the order they were added.
Update 2:
The real question is how to do the same kind of function (a global list) but without using a static Extension method.
Using the Razor engine how do I create Partial Views. Do I create a normal View and calling the PartialView() in the controller will only output the body content and when calling View() in the controller will output the full page with layout. If not, do I need to create specific Partial Views and then use RenderPartial in the View.
Why are Razor views not generated as partial classes? Making them partial classes gives us the option to have a code behind where we can do some of the stuff we're forced to do in the template itself in the code behind file.
Yes, I know the standard "go-to" thing is Html helper but I don't want to use Html helpers for these things as they are too specific to the view in question and besides, having a clutter of extension methods is just not the way to go.
I'd like to see Razor views generated as partial classes.
I have an MVC view that contains a number of partial views. These partial views are populated using partial requests so the controller for the view itself doesn't pass any data to them. Is it possible to reload the data in one of those partial views if an action was triggered in another? For example, one partial view has a jqGrid and I want to refresh the data in another partial view when a user selects a new row in this grid. Is there a code example for this scenario (in C#) that I can look at to see what am I doing wrong? I am using ajax calls to trigger a new request but non of the partial views are refreshed so I am not sure if the issue is with the routing, the controller,
After attempted to add jquery script tag to _Layout.cshtml as below, the result is empty body tag rendered in content page. I tried this immediately after creating new project to insure I hadn't mucked anything up. This is run on local Win7 dev machine. Any explanation for this or is there a new way to specify script references in the "master" layout page(s)? Omitting @Url.Content had no effect.
I've recently switched over to using the Razor view engine, and I want to specify a namespace to use in a view. I've tried adding an entry to the Web.config file, ie:
[Code]....
But none of my views recognise any of the classes inside that namespace, so I have to declare the namespace in every view that needs it. why the Web.config approach isn't working?
I have a layout page (or master page) with MVC 3 and would like to make my views sort of content pages to this layout page, but alas I have no clue how to do this.
I can not get the _PageStart.cshtml to work for my layout senario. I would prefer to use _PageStart to define a layout for all files in each folder. Each folder represents a different app feature that will contain different layouts.
Until I find a work about I had to copy and past the Layout ="~/folder/_PageStart.cshtml into each page of the folder to get the different layouts to work.
_PageStart isn't being recognized at all as the folders page start. Is there a web config setting missing? The docs aren't fully extensive yet for all Razor related info and I couldn't find anyone discussing this problem via search results.
In order to keep close to code once and separation I need to use the _PageStart.cshtml method rather than code a line in each page in the folder.
On win7 using both webmatrix and vs2010 web engines. Neither recognizes _PageStart.cshtml but hard coding into each file works.
I would like to do some customizing to the T4 template used to generate code for views added using the Add View dialogue in VS 2010. Assuming this is, in fact, done with T4 like traditionally ASPX views, where can I find this template? I have successfully customised the ASPX template, but I can't recall where I found it.
We need dynamic data passed to our layout file, no matter what the child view is. For example, we display some user specific data in the header of the layout.
How can we pass this data to the layout view without each action having to supply it independently? Should we use a custom controller, or is there a better solution?
What is the appropriate way of rendering a child template?And what's the difference? Both seem to work for me.And why does @Html.RenderPartial() no longer work?
What is the best way to add javascript at runtime from a view (or partialview)? For example i would like to build a partial view Banner.cshtml that use Banner.Js. Actually i am using a section into layout page but obviusly if i use 3 times the same partial view i have 3 reference to external Js. Is there a "best practice" to include Js from "child" elemnts like partial view in this case?
i m working in asp.net and i want to implement partial views. i want to load .ascx page without refreshing the current page and not even url changed. can i implement it in asp.net.
In one of my mvc application's view I have an AJAX form:
<% using (Ajax.BeginForm("HandleAddForm", "Home", new AjaxOptions { UpdateTargetId = "ContentDiv", InsertionMode = InsertionMode.Replace, OnBegin = "beginFormLoadEffect", OnSuccess = "successFormLoadEffect" }, new { id = "AddForm" })) { %> ... <% } %>
When user lefts the computer after five minutes he is beign automatiacally logged out . And when I submit form by clicking submit button the ContentDiv is beign filled with full site with login panel. I.e. I want to show the full site with login panel NOT in the ContentDiv. Is there any way to avoid this behaviour?
And the the partial view "Person" has an other model:[Code].... If I press the "Submit-Button" on the first view I get to the follwing controler: [Code]....
I have 2 partial views and models for them. I want to show both views on page and i assume i need one model to pass to the page. Do i have to create all the properties again for both partial views into one model?
Maybe this question is quite simple because I'm new to MVC2. I have a simple demo MVC project.
(1) A weak-typed view: Index.aspx
<% Html.RenderPartial("ArticalList", ViewData["AllArticals"] as List<Artical>); %>
(2) A strong-typed partial view: ArticalList.ascx
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<Artical>>" %> <% foreach (Artical a in Model) { %> <%= Html.ActionLink(a.Title, "About", new { id = a.ID })%><br /> <%} %>
(3) Here is the HomeController.cs
public ActionResult Index() { ViewData["AllArticals"] = Artical.GetArticals(); return View(); } public ActionResult ArticalList() { return PartialView(Artical.GetArticals()); }
Sorry I'm using a Web-Form "angle", because if I'm using a Web-Form, when I visit Index.aspx, rendering ArticalList.ascx will call public ActionResult ArticalList(). But here I need to write Artical.GetArticals() twice in two actions. How can I put them in one?
I want to load the partial views when I click on the hyperlink, in my case I am loading both the partial views and then I am showing or hiding depending the parital views.
I am wondering if Java Spring MVC has some sort of implementation that relates to returning partial views like ASP.NET MVC? Basically I want to return HTML, that is bound to an object and return it to a javascript callback to append to the dom, stead of building the html with Jquery (which is tedious). If not I may go with Jquery templates.