我正在努力寻找一种在web.configappSettings 中指定文件位置的方法,该方法避免使用硬编码路径,但允许非"网络感知"C#库查找文件.
C#库使用标准File.Open,File.Exists方法等对数据文件进行操作,该数据文件存储在我的Web应用程序(ASP.NET MVC)树中,例如:
\content\data\MyDataFile.txt
Run Code Online (Sandbox Code Playgroud)
要求:
<appSettings>
this--> <add key="MyFileLocation" value="~\content\data\MyDataFile.txt" />
not --> <add key="MyFileLocation" value="c:\inetpub\wwwroot\foo\content\data\MyDataFile.txt" />
</appSettings>
关于如何干净利落地做任何建议?谢谢!
基本版: 是否有一个轻量级的C#/ .NET库可以在ASP.NET MVC应用程序中用于服务WFS请求?
详细版本: 我们正在开发一个C#ASP.NET MVC应用程序,该应用程序位于具有一些基本地理空间数据的Sql Server 2008数据库之上.我需要能够在浏览器中的地图背景上使用我们简单的点/线要素(数据库实体)显示地图.计划是使用OpenLayers渲染地图.背景地图由第三方使用WMS提供,所以我知道我可以连接并显示OK.
我遇到的问题是我们希望在地图上显示的数据需要由用户过滤(它当前以表格形式显示).看来我真的需要公开一个WFS服务,以允许用户过滤数据以便在地图上显示.
是否有一个轻量级(理想情况下是免费的)C#组件可以做到这一点?我已经与SharpMap进行了简短的比赛,这很适合我们的需求,但是虽然我可以使用它来渲染地图和我们的数据,但我无法弄清楚如何应用过滤器(这会改变请求的请求)到渲染的数据.或者,有没有人有任何其他建议?
我正在努力避免使用全面的地理服务器(例如GeoServer,MapServer等),因为我们的要求非常基础,并且我们有各种基础设施限制.
提前致谢!
我正在编写一个简单的SNS客户端,用于订阅自己的SNS主题,然后收听通知.我可以成功提交sns.subscribe请求,但是当我SubscriptionConfirmation从AWS sns.confirmSubscription获取POST消息并尝试回复时,我得到一个AuthorizationError返回:
[AuthorizationError: User: arn:aws:iam::xxx:user/mv-user is not authorized to perform: SNS:ConfirmSubscription on resource: arn:aws:sns:us-east-1:xxx:*]
Run Code Online (Sandbox Code Playgroud)
如果我在服务器的GET查询中使用完全相同的Token和TopicArn,则订阅确认工作正常,没有身份验证.
任何想法为什么它不起作用?我的SNS主题是公开的,发布/订阅权限设置为"Everyone".
作为参考,我的代码是这样的:
var params = {
TopicArn: topicArn, // e.g. arn:aws:sns:us-east-1:xxx:yyy
Token: token // long token extracted from POST body
};
sns.confirmSubscription(params, function (err, data) {
if (err) {
// BOOOM - keep getting here with AuthorizationError
} else {
// Yay. Worked, but never seem to get here :(
}
});
Run Code Online (Sandbox Code Playgroud)
但是,如果我在浏览器中导航到与此类似的URL(即完全未经身份验证),则它可以完美地运行:
http://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&Token=<token>&TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3Axxx%3Ayyy&Version=2010-03-31
Run Code Online (Sandbox Code Playgroud)
唯一的区别似乎是在程序化版本中包含"授权"和"签名"标题(使用Wireshark检查).
有任何想法吗?提前致谢!
在我的代码中,如果我只是以编程方式 …
我在为Kendo网格中的列定义ASP.NET MVC ClientTemplate时遇到问题,因为"+"符号被剥离,导致客户端生成的模板由于语法错误而失败.
我的ClientTemplate是:
c.Template(@<text></text>).ClientTemplate("#='Hello' + Name#")
Run Code Online (Sandbox Code Playgroud)
但是,在客户端,这会减少到:
template: "#='Hello' Name#"
Run Code Online (Sandbox Code Playgroud)
即加号已被渲染为空格(类似于我猜的URL编码).如果我直接从JS使用该模板,则该模板非常有效(请参阅此JSBin).
有谁知道如何逃脱+符号所以我可以在ClientTemplate中使用它?
我尝试使用' \\+'(被渲染为' \'),' \+(无效的C#)转义,+(+尽管其他如,"工作正常").
有任何想法吗?谢谢.
作为参考,我正在使用Razor标记和Q2 2012 Kendo版本(当我们从Telerik升级时,不能使用Q3但受限于jQuery版本)
注意:在有人问为什么我这样做之前,我的ClientTemplate实际上更复杂,但这是一个简化的例子来说明问题:-)
我有以下形式的Linq to Entities查询:
var x = from a in SomeData
where ... some conditions ...
select new MyType
{
Property = a.Property,
ChildCollection = from b in a.Children
select new MyChildType
{
SomeProperty = b.Property,
AnotherProperty = b.AnotherProperty
}
};
var y = from a in SomeData
where ... some other conditions ...
select new MyType
{
Property = a.Property,
ChildCollection = from b in a.Children
select new MyChildType
{
SomeProperty = b.Property,
AnotherProperty = b.AnotherProperty
}
};
var results …Run Code Online (Sandbox Code Playgroud) 我有一个强类型的局部视图,其模型包含一个与父页面视图模型同名的属性.出于某种原因,渲染引擎渲染父视图模型值,而不是预期值(嗯,至少我期望的值!)
父页面视图模型提取:
public class ParentPageViewModel
{
public int Id { get; set; } // problem property
...
public IEnumerable<ChildViewModel> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
子页面视图模型提取:
public class ChildViewModel
{
public int Id { get; set; } // problem property
...
}
Run Code Online (Sandbox Code Playgroud)
父页面提取(Razor):
@model ParentPageViewModel
...
@foreach (var item in Model.Children)
{
@Html.Partial("MyPartialView", item)
}
...
Run Code Online (Sandbox Code Playgroud)
部分视图提取:
@model ChildViewModel
...
<form ...>
@Html.HiddenFor(m => m.Id) // problem here - get ParentPageViewModel.ID not ChildViewModel.Id
</form>
...
Run Code Online (Sandbox Code Playgroud)
所以基本上在我的渲染输出中,我的隐藏字段具有父视图模型元素的值,而不是传递给局部视图的值.它肯定是由名称引起的,因为将@ ChildViewModel.Id @的名称更改为类似@ ChildViewModel.ChildId @的内容使其按预期工作.有趣的是,在检查调试器中的视图模型值时,我确实看到了正确的值; …
我有一个ASP.NET MVC应用程序.在一个页面上,我有一个按钮,允许用户根据用户设置的页面上的某些值(滑块范围,复选框等)下载CSV文件,而无需离开页面.我的Controller类通过返回FileResult的方法返回该文件.
目前,我的javascript onClick方法实现如下,有点jQuery:
function DownloadCSV() {
var url = <%=Action("DownloadCSV", "Controller")%> + '?' +
$.param({
SomeValue: $("#valuefromform").val(),
OtherValue: $("#anothervaluefromform").val(),
...
});
window.location = url;
}
Run Code Online (Sandbox Code Playgroud)
这部分工作得很好,所以问题是:是否可以重写这个方法,以便它"发布"查询而不是使用"获取"查询字符串?
(我已经尝试过使用一个AJAX请求,它可以很好地POST,但是虽然我得到了文件数据,但这是XHR响应的一部分,我无法弄清楚如何将其下载为文件,所以如果有办法这样做也会很棒!)