我正在尝试写入内存中的文本文件,然后下载该文件而不将文件保存到硬盘.我正在用它StringWriter来写内容:
StringWriter oStringWriter = new StringWriter();
oStringWriter.Write("This is the content");
Run Code Online (Sandbox Code Playgroud)
我如何下载此文件?
编辑:这是答案的组合,给了我我的解决方案.这里是:
StringWriter oStringWriter = new StringWriter();
oStringWriter.WriteLine("Line 1");
Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", "attachment;filename=" + string.Format("members-{0}.csv",string.Format("{0:ddMMyyyy}",DateTime.Today)));
Response.Clear();
using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
writer.Write(oStringWriter.ToString());
}
Response.End();
Run Code Online (Sandbox Code Playgroud) 我从另一个开发人员那里获得了一个现有的项目,并且我在代码中注意到他们正在三个不同的事件处理程序中执行js代码......
function pageLoad() {
//execute code
}
$(document).ready(function() {
//execute code
});
$(function() {
//execute code
});
Run Code Online (Sandbox Code Playgroud)
我的问题是 - 他们都完全一样吗?或者至少是最后两个?我知道pageLoad是由.NET框架调用的,因此它不依赖于像后两个那样加载的jQuery库 - 这是我的理解 - 无论如何 - 那是正确的吗?
我是XSLT的新手,在尝试格式化具有递归节点的XML文档时遇到了一些问题.
我的XML代码:
希望我的XML显示:
<item>都嵌套着<items><item>嵌套节点的级别可能非常深<?xml version="1.0" encoding="utf-8" ?>
- <items>
<item groupID="1" name="Home" url="//" />
- <item groupID="2" name="Guides" url="/Guides/">
- <items>
- <item groupID="26" name="Online-Poker-Guide" url="/Guides/Online-Poker-Guide/">
- <items>
- <item>
<id>107</id>
- <title>
- <![CDATA[ Poker Betting - Online Poker Betting Structures
]]>
</title>
- <url>
- <![CDATA[ /Guides/Online-Poker-Guide/online-poker-betting-structures
]]>
</url>
</item>
- <item>
<id>114</id>
- <title>
- <![CDATA[ Beginners' Poker - Poker Hand Ranking
]]>
</title>
- <url>
- <![CDATA[ /Guides/Online-Poker-Guide/online-poker-hand-ranking
]]> …Run Code Online (Sandbox Code Playgroud) 我的页面上有两个中继器.第一个转发器中有一个LinkButton,带有命令名和命令规范.单击linkbutton时,commandarguement的值应该存储在包含List的Session中.然后我使用Session List的值绑定第二个转发器.
我有两个问题:
1)我在OnInit事件中绑定了第二个转发器.在init事件之后执行第一个转发器中的LinkButton时执行的事件处理程序 - 因此,当数据绑定发生时,新值尚未添加到会话中.我不能在init事件之后绑定数据,因为第二个转发器中的控件需要使用viewstate(或其他)来维护.
2)在第二个中继器中有两个下拉列表.两者都是在转发器itemdatabound事件中的数据绑定.当第一个DDL更改时,我需要过滤第二个DDL中的值.但这并没有发生.
为了更清楚的例子,我已经从我的应用程序中删除了代码并创建了一个非常简单的aspx页面 - 所有代码都在下面.感谢已经帮助过这个的Bobby.
真的希望有人可以帮忙,因为我难倒!
标记:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Repeater-Viewstate.aspx.cs" Inherits="test_Repeater_Viewstate" ViewStateMode="Enabled" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Repeater Test</h1>
<h2>Repeater 1</h2>
<asp:Repeater runat="server" Visible="true" ID="rptListItems">
<ItemTemplate>
Image ID: <asp:Literal ID="ImageID" runat="server" />
<asp:LinkButton runat="server" CommandName="SelectImage" Text="Add to list" ID="AddToListCommand" />
<hr />
</ItemTemplate>
</asp:Repeater>
<h2>Repeater 2</h2>
<asp:Repeater runat="server" Visible="true" ID="rptSelectedItems" ViewStateMode="Enabled">
<ItemTemplate>
The value of the item you …Run Code Online (Sandbox Code Playgroud) 我有一个aspx页面,其中包含以下内容:
这个想法是当用户点击链接按钮时,commandarguement的值存储在List中.你可能没有问题,但我需要将值存储在usercontrol中的List中,而不是存储在ASPX页面中.列表需要在回发中保留,因此它还需要存储在视图状态中.
所以我在用户控件中创建了一个公共属性,如下所示:
public List<int> ImageString {
get {
if (this.ViewState["ImageString"] != null) {
return (List<int>)(this.ViewState["ImageString"]);
}
return new List<int>();
}
set { this.ViewState["ImageString"] = value; }
}
Run Code Online (Sandbox Code Playgroud)
然后我希望从我的aspx页面我可以添加一行代码来为列表添加一个值,如下所示:
this.LightBoxControl.ImageString.Add(value);
Run Code Online (Sandbox Code Playgroud)
我得到的问题是该值实际上从未添加到列表中.计数始终为零.
我确定它只是因为我设置了错误的属性,但我不确定如何正确...
任何帮助将不胜感激.
谢谢Al
我的客户希望在他们的网站上放一些视频.在过去,我总是将视频转换为FLV,并使用LongTail Player之类的东西来播放它.
然而,现在当然很多人使用智能手机,如iPhone不播放闪存文件 - 所以最好的选择是什么?是选择一种格式的情况,还是最好使用闪存,然后为iPhone用户提供下载?我注意到我在iphone上查看过的一些网站,你可以点击视频,然后在YouTubes视频播放器中启动 - 这可能是一个选择吗?
意见将不胜感激.
感觉之前已经问过这个问题,但似乎没有问题可以解决我的问题,所以请提前道歉.
因为我使用ASP.NET和无法预测我想验证控件的名字,我建立我的JQuery验证规则,如下所示:
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });
Run Code Online (Sandbox Code Playgroud)
而不是:
$('#aspnetForm').validate({options and rules}); //需要控件名称
问题是,第三个规则是radiobuttonlist,并且错误消息没有放在正确的位置.它是在第一个单选按钮之后直接放置的,而我想在最后一个单选按钮列表之后放置它.
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[id$=LinkTextInput]').rules("add", { required: true, messages: { required: "required"} });
jQuery('input[name$=PositionChoiceInput]').rules("add", { required: true, messages: { required: "required"} });
Run Code Online (Sandbox Code Playgroud)
但是,当我添加errorPlacement选项时,我似乎无法使该方法工作.我也尝试过以下方法:
jQuery('#aspnetForm').validate({ errorPlacement: function (error, element) {
if (element.hasClass('sfRadioList')) {
error.insertAfter(element.parent("ul"));
}
}
});
jQuery('textarea[id$=MessageTextInput]').rules("add", { required: true, …Run Code Online (Sandbox Code Playgroud) 我有一个问题,即转发器的视图状态,即转发器内的控件不维护其视图状态.
我有以下内容:
中继器1:
<asp:Repeater ID="rptImages" runat="server">
<ItemTemplate>
<asp:LinkButton Text="Add" CommandName="Add" CommandArgument=<%# Eval("ID") %> runat="server" />
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
单击链接按钮时,CommandArgument的值将存储在页面上的隐藏字段中.
回发后,在加载prerender事件处理程序之前,我无法获取隐藏字段的值.所以在我的prerender事件中,我获取隐藏字段的值并将其存储在List属性中,如下所示:
if (!string.IsNullOrEmpty(this.SelectedImageIDsInput.Text)) {
this.ImageList.Add(this.SelectedImageIDsInput.Text);
}
Run Code Online (Sandbox Code Playgroud)
List属性如下所示:
public List<string> ImageList {
get {
if (this.ViewState["ImageList"] == null) {
this.ViewState["ImageList"] = new List<string>();
}
return (List<string>)(this.ViewState["ImageList"]);
}
set { this.ViewState["ImageString"] = value; }
}
Run Code Online (Sandbox Code Playgroud)
一旦我将值存储到我的List属性中,我就绑定了我的第二个转发器(再次在prerender事件中):
this.rptSelectedImages.DataSource = this.LightBoxControl.ImageList;
this.rptSelectedImages.DataBind();
Run Code Online (Sandbox Code Playgroud)
第二个中继器有一个下拉列表和一个文本框.问题是不维护这些子控件的视图状态.我认为这是因为每次回发我重新绑定转发器,因此它被重建.我不知道的是我怎么可能绕过这个?ImageList属性仅在回发时更新,因此我显然必须使用每个回发重新绑定转发器 - 如何才能完成?
任何帮助将不胜感激.
谢谢Al
我第一次使用MVC和Razor,希望这是一个非常简单的问题.我在网站上有两页.第一页(页面A)上有一个非常小的表单,其中包含电子邮件地址的输入.当用户输入他们的电子邮件地址并单击提交时,他们将使用HttpPost发送到页面B,如下所示:
@using (Html.BeginForm("NewsletterSignup","Common", FormMethod.Post))
{
<p>
<input type="text" class="text" value="Enter your email address" id="email" name="email" />
<input type="submit" class="submit" value="Sign Up" />
</p>
}
Run Code Online (Sandbox Code Playgroud)
在页面B上有一个主要表单,允许用户输入他们的姓名和手机号码.主窗体的控制器如下所示:
//newsletter signup page
public ActionResult NewsletterSignup()
{
var model = new NewsletterSignupModel();
return View(model);
}
[HttpPost, ActionName("NewsletterSignup")]
public ActionResult NewsletterSignupSend(NewsletterSignupModel model)
{
if (ModelState.IsValid)
{
//register the user here
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
在主窗体上,我有一个Validationsummary和每个字段的验证.问题是我的控制器声明只能使用HttpPost执行NewsletterSignupSend操作.因为页面A上的表单在用户到达页面B时使用HttpPost,所以验证已经运行 - 即在用户在页面b上提交表单之前.
我知道我在这里错过了一个基本的东西 - 有人能引导我朝着正确的方向前进吗?
在此先感谢Al
更新:要解决此问题,我已完成以下操作.
表格A使用以下方式呈现:
@Html.Action("MiniNewsletterSignup")
Run Code Online (Sandbox Code Playgroud)
表格A有一个控制器方法:
//mini newsletter view
public ActionResult MiniNewsletterSignup()
{
var model = new …Run Code Online (Sandbox Code Playgroud) 任何人都可以推荐一个定期更新的.browser定义文件库吗?我发现了来自http://owenbrady.net/browsercaps/的两个OceanSpiders 和来自http://aspnet.codeplex.com/releases/view/41420的一些定义文件,但我不确定是否定期更新(例如,iPad不包括在内).
在此先感谢Al
我有一个简单的Css规则:
strong a:hover {
text-decoration: none;
}
Run Code Online (Sandbox Code Playgroud)
这适用于以下HTML:
<strong>
<a href="www.stackoverflow.com">Go to website</a>
</strong>
Run Code Online (Sandbox Code Playgroud)
问题是我正在使用的CMS中的Wysiwyg经常将代码放入如下:
<a href="www.stackoverflow.com"><strong>Go to website</strong></a>
Run Code Online (Sandbox Code Playgroud)
我的css规则然后不起作用.有纯Css解决方案吗?
谢谢Al
我正在读取远程XML文件,一旦将XML加载到XMLDocument对象中,我需要遍历它并提取应用程序所需的值.我的代码如下:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml");
XmlNamespaceManager nsMan = new XmlNamespaceManager(xmlDocument.NameTable);
nsMan.AddNamespace("gesmes", "http://www.gesmes.org/xml/2002-08-01");
nsMan.AddNamespace("", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");
XmlNodeList xmlNodeList = xmlDocument.DocumentElement.SelectNodes("/gesmes:Envelope/Cube/Cube/Cube", nsMan);
HttpContext.Current.Response.Write("The numner of nodes is " + xmlNodeList.Count); //it's always zero
Run Code Online (Sandbox Code Playgroud)
然而,我得到的问题是XmlNodeList总是返回零节点,而如果我在XMLSpy中评估XPath表达式,我得到我需要的节点.
作为参考,XML看起来像:
<?xml version="1.0" encoding="UTF-8"?>
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time='2011-07-27'>
<Cube currency='USD' rate='1.4446'/>
<Cube currency='GBP' rate='0.88310'/>
</Cube>
</Cube>
</gesmes:Envelope>
Run Code Online (Sandbox Code Playgroud)
我想返回美元和英镑的Cube节点.
你聪明的人有什么想法吗?
谢谢Al
asp.net ×6
c# ×5
jquery ×2
repeater ×2
arraylist ×1
asp.net-mvc ×1
asprepeater ×1
css ×1
css3 ×1
download ×1
file ×1
javascript ×1
properties ×1
razor ×1
video ×1
viewstate ×1
xml ×1
xslt ×1