从代码调用Web资源时的常见任务是构建查询字符串以包含所有必需参数.虽然无论如何都没有火箭科学,但是你需要注意一些漂亮的细节,&如果不是第一个参数,编码参数等.
这样做的代码非常简单,但有点单调乏味:
StringBuilder SB = new StringBuilder();
if (NeedsToAddParameter A)
{
SB.Append("A="); SB.Append(HttpUtility.UrlEncode("TheValueOfA"));
}
if (NeedsToAddParameter B)
{
if (SB.Length>0) SB.Append("&");
SB.Append("B="); SB.Append(HttpUtility.UrlEncode("TheValueOfB")); }
}
Run Code Online (Sandbox Code Playgroud)
这是一个常见的任务,人们期望实用程序类存在,使其更加优雅和可读.扫描MSDN,我找不到一个 - 这让我想到了以下问题:
你知道做上述事情最干净的方式是什么?
我想解析一个字符串,如p1=6&p2=7&p3=8一个NameValueCollection.
当您无法访问该Page.Request对象时,最优雅的方法是什么?
我有一个格式为"key1 = value1; key2 = value2; key3 = value3;"的字符串
我需要将其转换为上述键值对的字典.
最好的方法是什么?谢谢.
如果我有这样的字符串:
"Name=Irwin&Home=Caribbean&Preference=Coffee"
Run Code Online (Sandbox Code Playgroud)
C#中有一个方法可以将其转换为类似于Request.QueryString的键值对吗?
我的控制器方法如下所示:
public ActionResult SomeMethod(Dictionary<int, string> model)
{
}
Run Code Online (Sandbox Code Playgroud)
是否可以仅使用查询字符串来调用此方法并填充“模型”?我的意思是,键入如下内容:
ControllerName/SomeMethod?model.0=someText&model.1=someOtherText
Run Code Online (Sandbox Code Playgroud)
在我们的浏览器地址栏中。可能吗?
编辑:
看来我的问题被误解了-我想绑定查询字符串,以便自动填充Dictionary方法参数。换句话说-我不想在我的方法中手动创建字典,但是我会用一些自动数学的.NET绑定器来创建它,所以我可以像这样立即访问它:
public ActionResult SomeMethod(Dictionary<int, string> model)
{
var a = model[SomeKey];
}
Run Code Online (Sandbox Code Playgroud)
是否有自动装订机,足够聪明地做到这一点?
c# ×4
.net ×3
query-string ×3
asp.net ×1
delimiter ×1
dictionary ×1
parsing ×1
string ×1
url ×1