2012-09-18 67 views
0

接收模式,我有以下型號:郵政形式MVC3

public class Person 
{ 
    public int ID{get;set;} 
    public string Name {get;set;} 
    public string Address{get;set;} 
} 

對於另一方面,我呼籲指數以下幾種觀點:

@model List<Person> 
@{ 

    foreach(Person person in Model) 
    { 
    <a href="#" id="@person.ID">@person.Name</a> 
    } 
} 

最後我有以下作用:

public ActionResult Index() 
{ 
    List<Person> persons=new List<Person>(); 
    persons.Add(new Person(){ID=1,Name="John"}); 
    persons.Add(new Person(){ID=2,Name="Tom"}); 
    persons.Add(new Person(){ID=2,Name="Derek"}); 
} 

我想創建一個表單(因爲我不能使用ajax這個應用程序由於一些要求),發佈一個實例用戶選擇的人(點擊我的視圖的主播時)。我想知道我可以如何將Person實例發佈到下面描述的另一個操作(因爲我的視圖是鍵入到通用人員列表中的)。

[HttpPost] 
public ActionResult Index(Person person) 
{ 
    ... Do whatever 
} 
+0

您可以使用JavaScript? –

+2

關於寫作問題的注意事項:請避免添加「謝謝你的筆記」(改爲upvote/accpt答案)和簽名(你已經有一個用戶名)。 4行謝謝/簽名不會爲您的問題帶來太多有用的信息。 –

+0

嗨阿爾貝託,這個具體項目不是。 阿列克謝,感謝您的評論,我會從現在開始把它計算在內。 – Jose3d

回答

2

解決方案與POST:

,以便與POST去解決它,你將不得不訂貨量大的形式和植物隱藏字段,如

@model List<Person> 
@{ 

    foreach(Person person in Model) 
    { 
    <form action="/controller/actionresult"> 
    <input type="submit" value=person.Name /> 
    <input type="hidden" name="ID" value="@person.ID" 
    <input type="hidden" name="Name" value="@person.Name" 
    </form> 
    } 
} 

,並在服務器端

[HttpPost] 
public ActionResult Index(Person person) 
{ 
    ... Do whatever 
} 

解決方案與GET

a標籤通常不與崗位工作有默認行爲是通過GET請求服務器的資源雖然可以覆蓋使用JavaScript這種行爲,但在你的情況是不是一種選擇,因此,你可以嘗試

@model List<Person> 
    @{ 

     foreach(Person person in Model) 
     { 
     @Html.ActionLink(persno.Name,"Index","home",new{ID=person.ID,Name=person.Name,null);  
     } 
    } 

唯一的缺點是,你將不得不使用一個提交按鈕,而不是a標籤,你可以使用CSS樣式的樣式按鈕像a標籤。如果你還沒有爲這種要求設置自定義的路由URI將查詢字符串PARAMS像

http://yourdomain/home/index?ID=1&Name=john 
+0

謝謝!這就是我一直在尋找的東西。 – Jose3d

2

你從錯誤的角度接近它。由於您沒有提供任何編輯Person的方法,您應該只通過引用(即PersonId)來傳遞它。

所以只需使用一個直接的鏈接:

//查看:

Html.ActionLink(person.Name, "ViewPerson", new { personId = person.ID }); 

//控制器動作:

public ActionResult ViewPerson(String personId) { 
    Person person = GetPersonFromDatabase(personId); 
} 
+0

是的,我知道戴,但在這種情況下,檢索人員是一項耗費大量工作的任務,所以即時通訊尋找一種方法,不要再花時間查詢。謝謝。親切的問候。何塞 – Jose3d