2012-03-01 89 views
0

請原諒我,因爲我剛剛學習MVC3。從未綁定輸入剃鬚刀獲得價值MVC3

我有2分貝表一比賽和一個答案。每場比賽都會有3個相關的答案。

我的創建視圖強制鍵入我的競爭對手模型。我想要做的就是在控制器中添加3個綁定的輸入框中的這一觀點和檢索結果

我的控制器看起來像這樣

Function Create(competition As Competition) As ActionResult 
    If ModelState.IsValid Then 
    db.Competitions.AddObject(competition) 
    db.SaveChanges() 
    Return RedirectToAction("Index") 
    End If 
    ViewBag.ClientID = New SelectList(db.Clients, "ClientID", "ClientName", competition.ClientID) 
    Return View(competition) 
End Function 

我想什麼做的是這樣的事情

Function Create(competition As Competition) As ActionResult 
    If ModelState.IsValid Then 
    'DIM ANSWERA AS STRING = INPUTA 
    'DIM ANSWERB AS STRING = INPUTB 
    'DIM ANSWERC AS STRING = INPUTC 

    db.Competitions.AddObject(competition) 
    db.SaveChanges() 
    'SAVE ANSWERS TO ANSWER TABLE 

    Return RedirectToAction("Index") 
    End If 
    ViewBag.ClientID = New SelectList(db.Clients, "ClientID", "ClientName", competition.ClientID) 
    Return View(competition) 
End Function 

對不起,如果我沒有正確格式化問題。希望你得到什麼,我試圖做

感謝

要點我現在上面的工作,我希望能夠在一個視圖

Function Edit(id As Integer) As ViewResult 
     Dim competition As Competition = db.Competitions.Single(Function(c) c.CompetitionID = id) 



     ViewBag.ClientID = New SelectList(db.Clients, "ClientID", "ClientName", competition.ClientID) 
     Return View(competition) 
    End Function 

所以我腳手架編輯比賽細節該視圖返回我的比賽細節,但如何添加3個輸入框以顯示與該比賽相關的3個答案?

回答

1

Request("NAME")將查找NAME作爲表單元素,cookie,查詢字符串參數或服務器變量的名稱。

Dim answerA as String = Request("answerA") 
Dim answerB as String = Request("answerB") 
Dim answerC as String = Request("answerC") 

爲了安全起見你應該專門針對所謂的「answerA」使用表單元素:

Dim answerA as String = Request.Form("answerA") 

但任何的以上兩個例子會工作。

+1

感謝Brad重新格式化我的文章。感謝Matt和bhamlin的答案都有效 – 2012-03-02 08:09:30

0

如果控制器參數名稱與輸入名稱匹配,則MVC將爲您執行綁定。所以,如果你的HTML看起來像:

<input type="text" name="answerA" /> 
<input type="text" name="answerB" /> 
<input type="text" name="answerC" /> 

那麼你的控制器可以簡單地

Function Create(competition As Competition, answerA As string, answerB As string, answerC As string) As ActionResult 

另外,您可以使用一個名爲answers數組,並與名稱,如answers[0]answers[1]等申報您的輸入字段..