Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使Html.TextBox(字符串名称)呈现经过净化的输入?_C#_Asp.net Mvc 4 - Fatal编程技术网

C# 如何使Html.TextBox(字符串名称)呈现经过净化的输入?

C# 如何使Html.TextBox(字符串名称)呈现经过净化的输入?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,我正在使用ASP.NET MVC4和.NET Framework 4.5。我有一个控制器操作,它接受一种类型的模型,其属性名为“Name”,但使用另一种类型的模型呈现视图。我仍然能够使用@Html.TextBox(“名称”)和@Html.ValidationMessage(“名称”) 我希望文本框显示经过消毒的输入,即用户可能输入的没有前导/尾随/额外空格的输入。我的模型的setter为我清理了值,并且我正在使用控制器操作中的getter成功地获得清理后的值。只是在提交表单时,文本框仍然显示不干

我正在使用ASP.NET MVC4和.NET Framework 4.5。我有一个控制器操作,它接受一种类型的模型,其属性名为“Name”,但使用另一种类型的模型呈现视图。我仍然能够使用
@Html.TextBox(“名称”)
@Html.ValidationMessage(“名称”)

我希望文本框显示经过消毒的输入,即用户可能输入的没有前导/尾随/额外空格的输入。我的模型的setter为我清理了值,并且我正在使用控制器操作中的getter成功地获得清理后的值。只是在提交表单时,文本框仍然显示不干净的输入

有什么机制我不知道吗?
@Html.TextBox(字符串名称)
帮助程序查看的是原始请求数据,而不是模型吗?如果是这样,验证消息是如何工作的

更新 我刚刚尝试定义了一个新的视图模型,其中包含了我的textbox字段,因此我希望能够使用
@Html.TextBoxFor
帮助器。在重新构建之后,一切仍然正常工作,我仍然没有得到文本框中出现的经过消毒的输入。我仍然不知道解决这个问题的办法

    [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
    public ActionResult MyAction(MyViewModel model)
    {
        if (this.ModelState.IsValid)
        {
            using (var service = new MyService())
            {
                model.MyResults = service.DoSomething(model.MySanitizedProperty);
            }
        }

        return this.View("MyView", model);
    }
然后,在“MyView”中:

@Html.TextBoxFor(m=>m.MySanitizedProperty)
@Html.ValidationMessageFor(m=>m.MySanitizedProperty)

在控制器中,调用
model.MySanitizedProperty
返回经过消毒的值,同时文本框继续显示未初始化的数据。

听起来模型有问题;确保您正确地访问了您希望填充的模型中的值,即可能离散地指定模型“名称”的来源。
此外,检查setter是否有机会对该值进行操作-如果在使用setter函数之前控制器处于激活状态,则只能获得原始输入值。
意识到您必须转到服务器才能让setter工作,可能需要异步回发或类似的方式,并重新加载值。

我正在发布整个页面。在控制器操作中,绑定模型的getter返回经过清理的输入。使用textboxfor有什么区别吗?不,它没有。。。即使在刚刚将所有内容定义到一个模型中以查看是否有帮助之后,它也没有。因此,您正在控制器上对其进行清理。当您刷新页面时,它显示的内容与控制器不同?我正在模型的setter中对其进行清理。然后,我使用控制器中的getter将经过清理的值传递给服务。这一部分工作正常,但页面在文本框中显示未初始化的数据。我将为我的问题添加代码。我不确定do something方法中发生了什么,但从您显示的内容来看,我的结果正在设置中。我没有看到任何设置为MySanizedProperty的内容。如果您将MyResults放入TextBoxFor,它是否显示您想要的值?
@Html.TextBoxFor(m => m.MySanitizedProperty)
<input type="submit" value="Go" />
@Html.ValidationMessageFor(m => m.MySanitizedProperty)