web-gelistirme-sc.com

HTML etiketlerinin asp.net'teki bir metin kutusuna gönderilmesine nasıl izin veririm?

Öncelikle, herkese Razor motoru değil aspx motoru kullandığımı bildirmek istiyorum. 

Bir formda bir masam var. Metin kutumdan biri gibi html etiketleri içeriyor 

</br>Phone: </br> 814-888-9999 </br> Email: </br> [email protected]  

Yapmaya gittiğimde, bana söyleyen bir hata veriyor. 

(QuestionAnswer="...ics Phone:<br/>814-888-9999<br...") istemcisinden potansiyel olarak tehlikeli bir Request.Form değeri tespit edildi.

Doğrulama isteğini = "false" denedim ama işe yaramadı.

Üzgünüm, şu ana kadar bakmanız için HTML kodumu eklemedim. Gerekirse düzenleyebileceğim bir soru soruyorum.

 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"   Inherits="System.Web.Mvc.ViewPage<dynamic>" %>


<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
EditFreqQuestionsUser
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
$(document).ready(function () {
    $("#freqQuestionsUserUpdateButton").click(function () {
        $("#updateFreqQuestionsUser").submit();
    });
});
</script>
<h2>Edit Freq Questions User </h2>

<%Administrator.AdminProductionServices.FreqQuestionsUser freqQuestionsUser =   ViewBag.freqQuestionsUser != null ? ViewBag.freqQuestionsUser : new   Administrator.AdminProductionServices.FreqQuestionsUser(); %>
<%List<string> UserRoleList = Session["UserRoles"] != null ? (List<string>)Session["UserRoles"] : new List<string>(); %>
<form id="updateFreqQuestionsUser" action="<%=Url.Action("SaveFreqQuestionsUser","Prod")%>" method="post" onsubmit+>
<table> 
    <tr>
        <td colspan="3" class="tableHeader">Freq Questions User Details <input type ="hidden" value="<%=freqQuestionsUser.freqQuestionsUserId%>" name="freqQuestionsUserId"/> </td>
    </tr>
     <tr>
        <td colspan="2" class="label">Question Description:</td>
        <td class="content">
            <input type="text" maxlength="2000" name="QuestionDescription" value="  <%=freqQuestionsUser.questionDescription%>" />
        </td>
    </tr>
     <tr>
        <td colspan="2" class="label">QuestionAnswer:</td>
        <td class="content">
            <input type="text" maxlength="2000" name="QuestionAnswer" value="<%=freqQuestionsUser.questionAnswer%>" />
        </td>
    </tr>
    <tr>
        <td colspan="3" class="tableFooter">
                <br />
                <a id="freqQuestionsUserUpdateButton" href="#" class="regularButton">Save</a>
                <a href="javascript:history.back()" class="regularButton">Cancel</a>
        </td> 
    </tr>
    </table>
      </form>
</asp:Content>
22
Yusuf

sayfa gönderilmeden önce, text.escape (...) ile metin kutusunun değerini kodlamanız gerekir.

Sunucu tarafında çıkmayan metne ihtiyacınız olursa, HttpUtility.UrlDecode(...) yöntemini kullanın.

çok hızlı örnek:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="SO.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script>
        function makeSafe() {
            document.getElementById('TextBox1').value = window.escape(document.getElementById('TextBox1').value);
        };

        function makeDangerous() {
            document.getElementById('TextBox1').value = window.unescape(document.getElementById('TextBox1').value);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server" onsubmit="makeSafe();">
    <div>
        <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine" Rows="10" ClientIDMode="Static"></asp:TextBox>
    </div>
    <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>


     <script>
         makeDangerous();
    </script>
</body>
</html>

Bu değişiklikleri kodunuzda yapın:

<script type="text/javascript">
    $(document).ready(function () {
        makeDangerous();
        $("#freqQuestionsUserUpdateButton").click(function () {
            makeSafe();
            $("#updateFreqQuestionsUser").submit();
        });
    });

    // Adding an ID attribute to the inputs you want to validate is simplest
    // Better would be to use document.getElementsByTagName and filter the array on NAME
    // or use a JQUERY select....

    function makeSafe() {
        document.getElementById('QuestionAnswer').value = window.escape(document.getElementById('QuestionAnswer').value);
    };

    // In this case adding the HTML back to a textbox should be 'safe'
    // You should be very wary though when you use it as actual HTML
    // You MUST take steps to ensure the HTML is safe.
    function makeDangerous() {
        document.getElementById('QuestionAnswer').value = window.unescape(document.getElementById('QuestionAnswer').value);
    }
</script>
25
Mesh

Denetleyici işleminizi [ValidateInput] niteliği ile dekore edin:

[ValidateInput(false)]
[HttpPost]
public ActionResult Foo(MyViewModel model)
{
    ...
}
7
Darin Dimitrov

Müşteri JavaScript:

function codificarTags() {
                   document.getElementById('txtDescripcion').value = document.getElementById('txtDescripcion').value.replace(/</g,'&lt;').replace(/>/g,'&gt;');
            };

<form id="form1" runat="server" onsubmit="codificarTags();">

Sunucu:

protected void Page_Load(object sender, EventArgs e)
    {
        txtDescripcion.Text = txtDescripcion.Text.Replace(@"&lt;", @"<").Replace(@"&gt;", @">");
3
user3519409

Html'yi textbox içinde kullanmak iyi bir uygulama değildir, belki br yerine linebreaks (Environment.NewLine) veya\r\n kullanın.? .NET Reference

Örnek (C # içinde): 

textBox1.Multiline = true;
textBox1.Text = "test" + Environment.NewLine + "test2";
1
XhkUnlimit

AjaxControlToolkit'in HTML Editörünü kullanmanızı öneririm. Bunu şimdi uyguluyorum. Metin kutusunuz çok satırlı ve HTML’yi barındıracak kadar büyükse, neden yalnızca bir HTML düzenleyicisine çarpmayın? Kullanıcınız da daha mutlu olacak.

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/HTMLEditor/HTMLEditor.aspx

0
Laki Politis