7

複雑なオブジェクトをパラメーターとして受け取るコントローラーアクションがあります。この複雑なオブジェクトのプロパティの1つによってOutputCacheを変更する必要があります。これは可能ですか?どのように?

4

3 に答える 3

6

次のようなモデルがある場合

public class person{
 public string Name {get;set;}
 public string location {get;set;}
} 

そして(強く型付けされた)ビューにはフォームがあります

 @model Person

 @Html.BeginForm(){
  @Html.TextBoxFor(x=>x.Name)
  @Html.TextBoxFor(x=>x.location)
 }

そして、次のActionResult ようなさまざまな署名を使用して、フォームをsavePersonに送信します

public ActionResult savePerson(Person p){
 // p.Name
 // p.location

}

また

public ActionResult savePerson(string Name, string location){

}

したがって、ActionResultに次のように注釈を付けると思います

[OutputCache(Duration=3600, VaryByParam="Name")]
public ActionResult savePerson(Person p)
{
    //
    return View();
}

それはあなたのために、またはあなたがのような複雑なモデルを持っているなら

public class person{
 public string Name {get;set;}
 public Location loc {get;set;}
} 
public class Location{
  public string address
}

試す

[OutputCache(Duration=3600, VaryByParam="Person.Location.address")]
public ActionResult savePerson(Person p)
{
    //
    return View();
}
于 2013-03-04T03:36:43.747 に答える