2015-11-08 6 views
1

Скажите, что я хочу кодировать тег <input> в пользовательском элементе управления для моего проекта против XSS с помощью антиХСС.не может конвертировать из 'System.Web.UI.HtmlControls.HtmlInputText' в 'string' с помощью HtmlEncode AntiXSS

searchbox.ascx

<input id="searchBox" type="text" class="QueryBox" runat="server" /> 

searchbox.ascx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using Microsoft.Security.Application; 

namespace Project2015.Website.layout.search 
{ 
    public partial class searchbox : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      searchBox = Encoder.HtmlEncode(searchBox); 
     } 


    } 
} 

Я получаю эту ошибку, когда я пытаюсь скомпилировать мой код

Error 108 Argument 1: cannot convert from 'System.Web.UI.HtmlControls.HtmlInputText' to 'string'

Error 107 The best overloaded method match for 'Microsoft.Security.Application.Encoder.HtmlEncode(string)' has some invalid arguments

не может увидеть, что я делаю неправильно здесь.

ответ

0

Поле поиска - это HTML-контроль. Используйте свойство text в кодировке.

searchBox.Text = Encoder.HtmlEncode (searchBox.Text);

Или вы можете напрямую использовать кодировку в aspx-файле.

Я предлагаю лучше создать вспомогательную функцию для кодирования и использования вспомогательной функции в коде. В дальнейшем вам будет проще настроить, если вы хотите применить некоторые условия.

+0

Я получаю следующую ошибку: System.Web.UI.HtmlControls.HtmlInputText 'не содержит определения для «Текст» и никакого метода расширения «Текст», принимающего первый аргумент типа «System.Web.UI. HtmlControls.HtmlInputText 'можно найти (вам не хватает директивы using или ссылки на сборку? – Phosy

+0

Попробуйте .Value вместо .Text –

+0

с .Value Я получаю исключение NullReferenceException [NullReferenceException: ссылка на объект не установлена ​​в экземпляр объекта .] Project2015.Website.layout.searchbox.Page_Load (отправитель объекта, EventArgs e) в c: \ inetpub \ wwwroot \ Project2015 \ Website \ layout \ search \ searchbox.ascx.cs: 15 System.Web.UI.Control .OnLoad (EventArgs e) +108 System.Web.UI.Control.LoadRecursive() +67 System.Web.UI.Control.LoadRecursive() +164 System.Web.UI.Control.LoadRecursive() +164 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4497 – Phosy