簡體   English   中英

C#-制作這些真正的鍵值對的語法

[英]C# - syntax to make these true key-value pairs

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值傳遞,並且任何y-coord值傳遞,有條件的將評估為true.

我需要具有代碼功能,以便必須傳遞x1和y1才能得出true,OR,x2和y2,OR,x3和y3,這樣它們才是真正的鍵值對,而不是兩個列表。

我相信所有這些都歸結為Contains方法,該方法允許任何x和y對被允許。 我只是不知道如何執行如上所述的嚴格配對。

您似乎對您的代碼在這里做什么感到困惑。 當您在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);
            }
        }
        );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM