ASP.Net MVC Web应用程序-我的Web.config
文件中包含以下代码:
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://www.contoso.com -->
<section name="entityFramework" type="words, EntityFramework, Version=numbers, Culture=more words" />
</configSections>
<appSettings>
<add key="x-coord" value="x1,x2,x3" />
<add key="y-coord" value="y1,y2,y3" />
</appSettings>
</configuration>
这是使用<appSettings>
键值的方法内部的条件:
if
(ModelState.IsValid &&
((ConfigurationManager.AppSettings["x-coord"].Contains(postModel.xCoordinate.ToLower())
& ConfigurationManager.AppSettings["y-coord"].Contains(postModel.yCoordinate.ToLower))))
{
return View(postModel);
}
问题在于,编写此代码时,只要传递x-coord
值的 any 和{{1}的 any }值传递后,条件条件的值将为y-coord
我需要具有代码功能,以便必须传递x1和y1才能得出true,OR,x2和y2,OR,x3和y3,这样它们才是真正的键值对,而不是两个清单。
我相信所有这些都归结为true.
方法,该方法允许任何x和y对被允许。我只是不知道如何执行如上所述的严格配对。
答案 0 :(得分:1)
您似乎对代码在这里的操作感到困惑。当您在web.config中设置<add key="x-coord" value="x1,x2,x3" />
时,您将添加一个具有单个值的密钥,该值是字符串"x1,x2,x3"
,因此,当您调用ConfigurationManager.AppSettings["x-coord"].Contains(postModel.xCoordinate.ToLower())
时,您所做的只是检查是否x坐标字符串包含postModel.xCoordinate
中的所有内容(显然已转换为小写)。然后,您对“ y-coord”值进行完全独立的检查。两者之间没有关系。
我不喜欢使用web.config来保存这样的应用程序逻辑,但是如果这确实是您想要的方式,我会对其进行设置,以便您可以分别拆分字符串和处理坐标。像这样:
<add key="coords" value="x1:y1,x2:y2,x3:y3" />
然后您可以执行以下操作:
var coords = ConfigurationManager.AppSettings["x-coord"].Split(',').ToList();
coords.ForEach(c =>
{
var coord = c.Split(':');
if (coord[0].Equals(postModel.xCoordinate.ToLower()) && coord[1].Equals(postModel.yCoordinate.ToLower()))
{
return View(postModel);
}
}
);