Блокировка объекта, который Вы используете, является просто вопросом удобства. Внешний объект блокирования может делать вещи более простыми, и также необходим, если совместно используемый ресурс является частным, как с набором (в этом случае, Вы используете эти ICollection.SyncRoot
объект).
Я тестировал его на моя машина, как для определения класса, так и для метода действия, и это сработало для меня в обоих случаях. Вы уверены, что ваше представление соответствует вашему методу / контроллеру? Вы помещаете атрибут в метод GET или метод POST?
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult MyAction (int id, string content) {
// ...
}
Pro ASP.NET MVC Framework (p466) говорит, что следующее должно работать:
public class MyController : Controller
{
public MyController() {
ValidateRequest = false;
}
}
Вы можете опубликовать файл контроллера и файл представления.
Это работает;
MytestController ------------------- -------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace testapp.Controllers
{
[ValidateInput(false)]
public class MyTestController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
MyTest (Индекс) ------------------------------ -------------------------
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!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>Index</title>
</head>
<body>
<% using (Html.BeginForm()) { %>
<%= Html.TextBox("test")%>
<button type="submit" >Submit</button>
<%} %>
</body>
</html>