string.contains(string) 匹配整个单词

string.contains(string) match whole word

在我看来,

@using(Html.BeginForm("Action", "Controller", FormMethod.Post)){
<div>
    @Html.TextBox("text_1", " ")
    @Html.TextBox("text_2", " ")
    @if(Session["UserRole"].ToString() == "Manager"){
    @Html.TextBox("anotherText_3", " ")
    }
</div>
<button type="submit">Submit</button>
}

在我的控制器中,

public ActionResult Action(FormCollection form){
    if(!form.AllKeys.Contains("anotherText")){
        ModelState.AddModelError("Error", "AnotherText is missing!");
    }
}

我有一个表单和 post 我的方法,在我的方法中我想检查一个文本框是否包含 "anotherText",但我使用 .Contains() 它总是给出 false在我的表单集合中找不到...我该怎么做才能检查包含 "anotherText" 的文本框是否存在?

搜索失败是有道理的,因为它不是完全匹配。

尝试使用 StartsWith 来查看是否有任何键以您要查找的值开头。

if (!form.AllKeys.Any(x => x.StartsWith("anotherText")))
{
    // add error
}

string.Contains 不同,如果 string 包含给定的 子字符串 ,则 return true,您在这里所做的是检查是否在 AllKeys(这是一个 Collection)有任何 Key键 - sub-item Collection) 属于 string "anotherText".

if(!form.AllKeys.Contains("anotherText"))

因此,sub-item集合 中是整个 string 本身,而不是 string

substring

因此,您的 AllKeys 必须确实包含与之匹配的确切 string

"anotherText_2", //doesn't match
"anotherText_1", //doesn't match
"anotherText_3", //doesn't match
"anotherText" //matches

Contains比较string

string str = "anotherText_3";
str.Contains("anotherText"); //true, this contains "anotherText"

因此,您应该检查 KeysAny 是否有 "anotherText":

if (!form.AllKeys.Any(x => x.Contains("anotherText")))
{
    // add error
}