HTML 태그(코드)를 ASP.net MVC & JQuery로 문자열로 게시합니다.
MVC Model을 통해 Form을 컨트롤러의 Save 기능에 게시하려고 합니다.를 사용하여 과 같은 <p> Content text blah blah ...</p>
.
수 없다는 것입니다.<p> something </p>
하지만 놀랍게도,< p > something < / p >
이 문자열("<"" 뒤에 공백이 있음)에는 문제가 없습니다.하지만 저는 이 html 코드를 처리할 수 없고 매번 게시하기 전에 공간을 만듭니다.더 좋은 방법이 있을 겁니다.
그렇다면 $.post 메서드를 통해 HTML 코드가 포함된 문자열을 게시하려면 어떻게 해야 합니까?이 프로젝트는 콘텐츠 관리 시스템입니다.따라서 HTML 기반 콘텐츠 텍스트를 SQL 테이블에 저장해야 합니다.)디버깅을 해보니 사후 조치가 컨트롤러에 도달하지도 않고 자바스크립트 문제만 있는 것 같은데 맞나요?
사용 중인 코드는 다음과 같습니다.
JqueryFromPost(formId) { 함수 var form = $(formId);varaction = form.attraction";varserializedForm = form.interialize배열(); $.post(액션, serializedForm, 함수(데이터) {//여기서 데이터 결과 가져오기... });}
CS 코드
[HttpPost]공개 Json 결과 문서 저장(문서 모델 모델){Json Result JResult = new Json Result(); if(모델 상태).유효함)//"Jesult"로 끝나는 저장 작업을 수행합니다.Data = "Success";"(이것도 Failed일 수 있음).그래서, 그냥 설명하기 위함입니다) JR 결과 반환;}
ASP.NET에는 XSS 및 HTML 주입 공격으로부터 자동으로 보호하는 요청 유효성 검사 기능이 내장되어 있습니다.이 유효성 검사를 명시적으로 비활성화하려면 게시할 작업을 다음 특성으로 장식할 수 있습니다.
[HttpPost]
[ValidateInput(false)]
public ActionResult SaveArticle(ArticleModel model)
{
var JResult = new JsonResult();
if (ModelState.IsValid)
{
...
}
return JResult;
}
ASP에서 실행 중인 경우에도 마찬가지입니다.이 속성을 적용하려면 다음을 web.config에 추가해야 합니다.
<httpRuntime requestValidationMode="2.0" />
그리고 만약 당신이 ASP를 사용하고 있다면요.NET MVC 3.0 모델에서 HTML이 필요한 속성만 다음 속성으로 장식할 수 있습니다.
public class ArticleModel
{
[AllowHtml]
public string SomeProperty { get; set; }
public string SomeOtherProperty { get; set; }
}
또한 자바스크립트 기능에서 다음과 같은 기능을 사용하는 것이 좋습니다.
function JqueryFromPost(formId) {
var form = $(formId);
$.post(form.action, form.serialize(), function (data) {
//Getting the data Result here...
});
}
검증을 사용하면 안 됩니다.MSN이 여기서 말한 것처럼 입력(거짓): http://msdn.microsoft.com/en-us/magazine/hh708755.aspx 그냥 사용하세요.[AllowHtml]
당신의 모델 속성에서 당신은 html을 가져가길 원합니다.
[AllowHtml]
public String htmlContainer { get; set; }
또한 HTML을 인코딩한 후 서버에 게시하는 것이 더 좋다고 생각합니다.
[검증] 사용입력(false)]은(는) 많은 보안 위반을 초래하는 매우 나쁜 관행입니다. 모델 속성의 [AllowHtml]은(는) 이를 수행하는 더 안전하고 신뢰할 수 있는 방법입니다.하지만 모델 자산을 사용할 수 없다면 훨씬 더 깨끗한 해결책이 있습니다.
클라이언트 사이드(mycase javascript)에서 텍스트를 간단히 인코딩하고, 서버 사이드(컨트롤러 기능)에서 디코딩합니다.저는 vb.net 프로젝트를 위해 아래를 사용했습니다.
var SearchStringValue = <p> some blah...blah data </p>
이제 위 변수를 인코딩합니다.
var encodedSearchStringValue = window.escape(document.getElementById('SearchStringValue').value)
이제 encodeSearchStringValue를 Ajax를 사용하여 컨트롤러에 전달합니다.
컨트롤러에서 얻을 변수를 디코딩하기만 하면 됩니다.<p> some blah...blah data </p>.
Dim SearchStringValue = HttpUtility.UrlDecode(encodeSearchStringValue)
이것이 도움이 되길 바랍니다...... :)
언급URL : https://stackoverflow.com/questions/4759681/post-html-tag-codes-as-string-with-asp-net-mvc-jquery
'programing' 카테고리의 다른 글
CSS 배경 이미지를 어둡게 합니까? (0) | 2023.08.23 |
---|---|
요소를 이동하지 않고 호버에 CSS 테두리 추가 (0) | 2023.08.23 |
Swift 이니셜라이저가 슈퍼클래스에서 편의 이니셜라이저를 호출할 수 없는 이유는 무엇입니까? (0) | 2023.08.23 |
NuoDB를 사용하여 Ruby On Rails에서 SQL 명령을 수동으로 실행하는 방법 (0) | 2023.08.23 |
SQL Server 로그인 오류: 'NT AUTHORITY\SYSTEM' 사용자에 대한 로그인 실패 (0) | 2023.08.23 |