Html - Inject A Code-behind Variable Or Function Evaluation Into The Page Using <%# ?
Jul 23, 2010
Can someone explain to me the rules around what can and cannot be evaluated/inserted into markup using the <%# %> and <%= %> tags in asp.net?When I first discovered I could inject code-behind variables into mark-up using <%= I thought 'great'. Then I discovered that if such tags are present you can then not add to the controls collection of the page (that's a whole different question!). But <%# tags are ok.
Is there a way I can inject a code-behind variable or function evaluation into the page using <%# ?
DataRow[] dr; dr = dt.Select("stepid = '1' AND placeid = " + Convert.ToInt32(h1.Value));so dt -- contains so many Rows from that i am going to filtering the data and add that row to the another DT - Finally bind the Dt to the Dropdownlist how to resolve this issue ?But it shows error :[Code]....
************** Exception Text **************System.Exception: Function evaluation disabled because a previous function evaluation timed out. You must continue execution to reenable function evaluation. at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.PrivateCallback.MaybeDeserializeAndThrowException(Byte[] data) at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.ManagedShim.DelegatedHost.CreateViewer(IntPtr hwnd, HostServicesHelper hsh, SafeProxyWrapper proxy)
I am struggling with something that I guess should be standard practice really. I have a number of user controls that use some JQuery plugins. I do not really want to link to the extra CSS and JS files from my main masterpage as this would cause extra load to the user the first time they hit the site, (admittedly it would only be the once), so I was just putting them links into the top of the user control. Then I looked at my source HTML, not nice! Even worse for controls that repeat multiple times on a page.
So I was thinking is there a way of injecting them into the Head of the page when they are needed from the User Control. For that matter is there a way of doing it to the footer for JS stuff?
I have a simple, but probably common problem on how to inject HTML inside an ASP.NET MVC master page. I have a google analytics tracking code that sits on my master page. The code looks like this:
var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-1']); _gaq.push(['_trackPageview']); // need to inject ecommerce code here (function () { // google analytics code here })();
I'm using ecommerce tracking and I want to inject the "cart" information in side this HTML on the receipt page (and ONLY on this page). So I do something like this:
var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-XXXXX-1']); _gaq.push(['_trackPageview']); <% if(ViewData["googleanalytics"]!=null) {%> <%= ViewData["googleanalytics"] %> <% } %> (function () { // google analytics code here })();
Then in the controller, I have code that looks like this:
[HttpGet] public ActionResult Receipt() { var receipt = // get receipt model // get google analytics javascript. This function pulls // the data from the receipt model ViewData["googleanalytics"] = GetAnalyticsInfo(receipt); return View(receipt); }
I have a function that gets the position of a control.
[Code]....
All the function needs is an htmlcontrol being fed to it as the parameter (elemRef). I can declare a variable in Javascript of the same content page but different function and pass the parameter successfullly getting returned values. For example, if I have the following function:
function (getPosition) { var txtBox1 = document.getElemendById('<%=txtBox1.ClientID %>'); getPos(txtBox1); }
I will get the coordinates of the control txtBox1. But how can I accomplish this if I am calling this function from a javascript function or codebehind of the Master Page, or codebehind of the same content Page.
I have a tricky problem and I'm not sure where in the view rendering process to attempt this. I am building a simple blog/CMS in MVC and I would like to inject a some html (preferably a partial view) into the page if the user is logged in as an admin (and therefore has edit privileges).
I obviously could add render partials to master pages etc. But in my system master pages/views are the "templates" of the CMS and therefore should not contain CMS specific <% %> markup. I would like to hook in to some part of the rendering process and inject the html myself.
how to do this in MVC? Where would be the best point, ViewPage, ViewEngine?
I have a problem to pass along public variables from C# code to the HTML code. I assign the variables in the Page_Load event and then pass along them to the Panel and Image control in the HTML code. Though I get this compileerror for the Width: "Cannot create an object of type "System.Web.UI.EbControls.Unit" from its string representation '<%setWidthImage%>' for the 'Width' property."
This works. Now I have to submit a form via C# code.... DONE. It works. And my C# code saves the "new" HTML to a string variable called "submitParsedHTML". My question is: how to I change out the URL, to go through the string variable instead? I am thinking about doing this: When the user clicks the button to "Post" to the form and the app grabs the HTML. The app logs into my FTP account and saves the HTML as a seperate (temporary) file to be used on the internet [URL] Then the app can then parse the HTML as if it was a normal HTML document and not have to go through formatting the text to an HTML document. What do you all think?
So when I run the page I expect to receive the postbackcode and the select code with the onchange property defined.
When I invoke the pages in Explorer, Safari or Chrome everything works fine but in Firefox the __doPostBack function and the onchange property in the select tags are not defined. Why is that?
I have a page with a Textbox, a Button and a Label control. On Button_Click event , I store the value of Textbox in a variable called S using code behind.
I want to show the value of S in the Lable control using inline code but not using the code behind. ?
I have written a t4 template that basically replaces the work done by StronglyTypedResourceBuilder to give design time access to string resources as properties of classes, one class per resource file. Why? Well I needed to add some customer code that handles string token substitution and a few other customizations. Anyway, the template is working out really well and I may blog on it soon.
In the mean time though, following a common pattern, I have one .resx file for each view, master page, controller, etc. I would really like my t4 template to add a property to each such entity that gives quick access the custom resource class associated with it. For controllers this is easy. T4MVC is ensuring that they are a all declared partial. All I need to do is create the appropriate partial class in my output that declares a readonly property that returns an instance of the appropriate generated resource class.
The Problem:
I would like to do the same thing, inject generated code, into my views. Were this traditional ASP.Net, each .aspx page would have a .aspx.cs page and possibly an .aspx.designer.cs page that are all partial classes extending in the aspx page's class definition. There is no such thing by default in MVC and for good reason. However, I think for my purposes, if there is a way to do this, it would be the way to go.
I could subclass ViewPage and add a generic type parameter and a property that returns the class of that type but that has certain complications. I think adding auto generated code to each view via partial class (that is what partials are for after all) is the way to go.
I have made a basic attempt. I have created a .aspx.cs file for a view and placed a code behind attribute in the page declaration but the class generated from the view seems to reside in a different assembly any my "partial class" ends up as its own class in the same assembly as all my other code.
I have a page with is basically a few Gridviews that I want to email to some users. The Gridviews are connected to sqldatacontrols. I create the select statements in the code behind. This all works fine.
To email the page I read the page into a streamreader and then creates an email and sends it. So when I get the email the Gridviews show no data.
I stepped through my code and found that the issue is with a variable. The Select statement has a few parameters one of which comes from a profile variable. When the page is read the profile variable is empty. I tried it as a session variable and that fails as well so my question is if I cannot use profile variables or session variables what other way is there to save this data?
In VB I can place module level variables so that say when a form loaded and I wanted to save a variable I would load the module variable which made it available to any form in the project but I assume that I cannot do the same in VB.net asp.Net? On the first page load the variable is available I just have to figure out a way to save it to pull out again when the page posts back.
depending on the No. of the photos the code will be duplicated in the loop
Then I will display the result of the loop in label or in a textarea to let the user copy it any where
The problem is that while compiling my code it considers the HTML code as a part of the behind file and gives errors on the single quote, the double quote and on the parentheses
Is it at all possible to inject a request into IIS for a page, have IIS and ASP.Net handle it as normal, but get the response as html handed back to me programmatically?
Yes, I know that I could connect to port 80 using WebRequest and WebResponse, but that becomes difficult if you are accessing the IIS server from the same physical machine (loopback security controls et al).
Basically, I want to inject the request (eg for [URL]) between the points at which IIS would normally talk to the browser, and the point at which it would route it to the correct ASP.Net application, and get a response back from IIS between the points at which ASP.Net/IIS applies the httpfilters and hands the html back to the browser.
I'm predominantly working with IIS7 so if there is a solution that works just for IIS7 then thats not an issue.
I'd like to know how to declare a variable in my code behind page that I can use in all the subs of my code behind.
I tried in after the Partial Class declaration to declare a "Public String" :
[Code]....
and to use it in my subs but when I use it from a sub to another I loose the value affected in another sub.
Is there a way to use a Public variable from a sub to another (I'm actually using a session variable in order to do it and I'm not sure it is the best way)
I have an Html Form that I want to set focus to when the page loads. What I have done is coded the Site.Master to run a javascript function on page load. That js function retrieves a hardcoded form name from the DOM and, if found, sets focus to an input field in that form.