我正在开发一个网络应用程序.在其中我有一个名为类别的部分,每当用户点击其中一个类别时,更新面板就会加载相应的内容.
用户点击类别后,我想更改浏览器的地址栏网址
www.mysite.com/products
Run Code Online (Sandbox Code Playgroud)
喜欢的东西
www.mysite.com/products/{selectedCat}
Run Code Online (Sandbox Code Playgroud)
没有刷新页面.
我可以使用某种JavaScript API来实现这一目标吗?
我正在C#Win8 CP上基于xaml的metro应用程序内部进行调用; 此调用只是命中一个Web服务并返回JSON数据.
HttpMessageHandler handler = new HttpClientHandler();
HttpClient httpClient = new HttpClient(handler);
httpClient.BaseAddress = new Uri("http://192.168.1.101/api/");
var result = await httpClient.GetStreamAsync("weeklyplan");
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(WeeklyPlanData[]));
return (WeeklyPlanData[])ser.ReadObject(result);
Run Code Online (Sandbox Code Playgroud)
它挂起,await但http呼叫几乎立即返回(通过提琴手确认); 就好像await被忽略了它只是挂在那里.
在您询问之前 - 是 - 打开了专用网络功能.
任何想法为什么会挂起?
使用MVC时,返回adhoc Json很容易.
return Json(new { Message = "Hello"});
Run Code Online (Sandbox Code Playgroud)
我正在使用新的Web API寻找此功能.
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)
这会引发异常,因为DataContractJsonSerializer无法处理匿名类型.
我有这个替换此JsonNetFormatter基于Json.Net.如果我使用,这可行
public object Test()
{
return new { Message = "Hello" };
}
Run Code Online (Sandbox Code Playgroud)
但是我没有看到使用Web API的重点,如果我不回来HttpResponseMessage,我会更好地坚持使用vanilla MVC.如果我尝试使用:
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)
它将整个序列化HttpResponseMessage.
任何人都可以指导我一个解决方案,我可以在其中返回匿名类型HttpResponseMessage?
将路径与文件名组合的最佳方法是什么?
也就是说,给予c:\foo和bar.txt,我想要c:\foo\bar.txt.
鉴于c:\foo和..\bar.txt,我想要一个错误或c:\foo\bar.txt(所以我不能Path.Combine()直接使用).同样的c:\foo和bar/baz.txt,我想要一个错误或c:\foo\baz.txt(不c:\foo\bar\baz.txt).
我意识到,我可以检查文件名不包含'\'或'/',但这还够吗?如果没有,那么正确的检查是什么?
我有一个问题,在新的MVC项目上工作,一旦我添加Html.Partial("Name")到我的_Layout.cshtml页面,ASP.NET将在页面加载时抛出此异常:
错误CS0012:定义了"System.Object"类型不在引用的程序集中.添加对程序集"System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"的引用.
修复是将其添加到web.config编译元素:
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
Run Code Online (Sandbox Code Playgroud)
我很想知道为什么这会解决这个问题.
奇怪的是,我正在使用的新MVC应用程序有一大堆WebForms ASPX页面可供使用.我已经将大量遗留的WebForms内容复制到这个新的MVC项目中,大量的代码,一切正常,没有Html.Partial调用,甚至我的MVC视图呈现.
那么地球上究竟发生了什么?这个配置做了什么,为什么不是正常的项目引用和目标框架设置呢?
我想使用App.config存储一些设置.我尝试使用下一个代码从配置文件中获取参数.
private string GetSettingValue(string paramName)
{
return String.Format(ConfigurationManager.AppSettings[paramName]);
}
Run Code Online (Sandbox Code Playgroud)
我也System.Configuration为它添加了(我使用了一个单独的类),在App.config文件中我有:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key ="key1" value ="Sample" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但是我在尝试使用时遇到了错误ConfigurationManager- ConfigurationManager can't exist in such context但是我已经添加了System.Configuration.还是我错过了什么?
编辑:
带配置的类(完整视图)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
namespace browser
{
class ConfigFile
{
private string GetSettingValue(string paramName)
{
return String.Format(ConfigurationManager.AppSettings[paramName]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
EDIT2
添加它的外观

这意味着问题不是在使用过程中,ConfigurationManger而是在使用之前 …
我总是对选择哪一个感到困惑.当我看到它,我用Dictionary了List,如果我想两个数据类型为Key和Value这样我就可以很容易地找到它的价值key,但我总是困惑,如果我要使用一个ConcurrentDictionary或Dictionary?
在我离开之前没有对此进行太多研究之前我已经尝试过,但似乎谷歌并没有真正得到任何关于Dictionaryvs ConcurrentDictionary但是每个人都有一些东西.
我之前曾问过这样的朋友,但他们所说的只是:" ConcurrentDictionary如果你在代码中使用了很多字典就会使用",我真的不想纠缠他们来更详细地解释它.任何人都可以扩展这个吗?
来自其他编程语言,String.replace()通常替换所有匹配的字符串.但是,javascript/typescript不是这种情况.我在网上找到了许多使用正则表达式的javascript解决方案.由于特殊字符,我立即遇到了这个解决方案的问题.我怀疑有一种方法可以用正则表达式来解决这个问题,但我不是一个正则表达式专家.正如我之前所做的那样,我创造了自己的方法.
也许有一些方法可以通过使用自定义StringBuilder()类来提高性能.我欢迎任何想法.
public static Replace = function (originalString: string, oldValue: string, newValue: string, ignoreCase: boolean = false) {
//
// if invalid data, return the original string
//
if ((originalString == null) || (oldValue == null) || (newValue == null) || (oldValue.length == 0) )
return (originalString);
//
// do text replacement
//
var dest = "";
var source: string = originalString;
if (ignoreCase)
{
source = source.toLocaleLowerCase();
oldValue = oldValue.toLowerCase();
} …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么以及何时应该使用async控制器操作.最终,当我await在其中使用时,它将等待操作完成以返回视图.
例如
public async Task<ActionResult> TryMe()
{
await SomeActionAsync();
return View();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果我使用async或不使用async,则Action将花费相同的时间来执行.
如果我没有尝试并行运行至少2个慢速操作(并非彼此依赖),我认为没有任何理由使用async控制器操作.
如果我错了,请纠正我.我想我在这里遗漏了一些东西.
asp.net asynchronous task-parallel-library async-await asp.net-mvc-4
我想创建一个SQL Azure用户并授予她对少数几个DB的只读访问权限,我可以使用哪个脚本来实现这一目标?
c# ×5
.net ×3
asp.net ×2
async-await ×2
asynchronous ×2
address-bar ×1
config ×1
dictionary ×1
filenames ×1
javascript ×1
json ×1
json.net ×1
path ×1
sql ×1
sql-server ×1
t-sql ×1
typescript ×1
url ×1
winforms ×1