0

EF4.0を使用してMVCアプリケーションを開発しています。

アドレスフィールドに値を入れようとして<test>いますが、保存すると以下のエラーが発生しますが、どうすれば解決できますか?

潜在的に危険なRequest.Form値がクライアントから検出されました(Address = " <test>")。

編集

以下のコードを確認してください

namespace CEntities
{
    [MetadataType(typeof(EmployeeMetaData))]
    public partial class Employee
    {
    }

     /// <summary>
     /// Holds the validations for Employee class
     /// </summary>
     public class EmployeeMetaData
     {
         [Key]
         public int Id { get; set; }
         [Required]
         [StringLength(50, ErrorMessage = "First name can accept maximum 50 characters.")]
         public string FirstName { get; set; }

         [StringLength(50, ErrorMessage = "Last name can accept maximum 50 characters.")]
         public string LastName { get; set; }

         [StringLength(1000, ErrorMessage = "Address can accept maximum 1000 characters.")]
         public string Address { get; set; }
      }
}
4

3 に答える 3

0

@YograjGupta が良い答えをくれました。なぜうまくいかないのかわかりませ[AllowHtml]ん。もう 1 つのオプションはコントローラにあります。データベースに を保存する場合は、変更を保存する前に をEmployeeMetaData追加でき ます。また、その部分db.Configuration.ValidateOnSaveEnabled = false;を削除する必要があります。if(ModelState.IsValid)

<別のオプションは、 and>を置き換えることですemployeeMetaData.Address.Replace("<", "&lt;").Replace(">", "&gt;")

この属性を使用すると[AllowHtml]、ハッキングに対して脆弱になるため、最終リリースの前に削除することをお勧めします。または、安全でない html を追加Microsoft.Security.Applicationして削除することもできます。Sanitizer.GetSafeHtmlFragment(address)

編集

コントローラーは次のようになります。

public ActionResult Create(Employee employee)
{
    employee.Address = employee.Address.Replace("<", "&lt;").Replace(">", "&gt;");
    if(ModelState.IsValid)
    {
        db.Employees.Add(employee);
        db.SaveChanges();
        return RedirectToAction("Index");
    }
}

または、これを試すことができます:

public ActionResult Create(Employee employee)
{
    db.Configuration.ValidateOnSaveEnabled = false;
    db.Employees.Add(employee);
    db.SaveChanges();
    return RedirectToAction("Index");
}

dbはデータベースであり、データベース内Employeeの Employee テーブルです。

于 2012-08-28T05:51:16.443 に答える
0

を使用ValidateInput(false)してオフにするか、属性をモデルプロパティにRequest Validation追加できます[AllowHtml]

編集

[AllowHtml]Address モデル プロパティに属性を追加します。

[StringLength(1000, ErrorMessage = "Address can accept maximum 1000 characters.")]
[AllowHtml]
public string Address { get; set; }

using System.Web.Mvc; ディレクティブを上に追加します。

Assembly System.Web.Mvc.dll、バージョン 4 またはバージョン 2 を使用していますか。

[AllowHtml]属性は入っていAssembly System.Web.Mvc.dll, version 4ます。これを適用するには、アセンブリのバージョンを確認してください。

于 2012-08-28T05:19:06.007 に答える
0

以下のコードを確認してください

名前空間 CEntities

{

[MetadataType(typeof(EmployeeMetaData))]

public 部分クラス Employee

{



}
 /// <summary>
 /// Holds the validations for Employee class
 /// </summary>
 public class EmployeeMetaData
 {
     [Key]
     public int Id { get; set; }
     [Required]
     [StringLength(50, ErrorMessage = "First name can accept maximum 50 characters.")]
     public string FirstName { get; set; }
     [StringLength(50, ErrorMessage = "Last name can accept maximum 50 characters.")]
     public string LastName { get; set; }

     [StringLength(1000, ErrorMessage = "Address can accept maximum 1000 characters.")]
     public string Address { get; set; }

  }

}

于 2012-08-28T05:41:43.510 に答える