2016-09-15 79 views
0

這是一個學校項目,我並不真正明白我應該做什麼,所以我會解釋老師告訴我的和我到目前爲止做了什麼,希望你們可以幫忙。 爲了檢查程序是否成功,教師希望手動向頁面的網址添加一個數字。 我需要採取這個數字,從網址中提取它,然後植入它的方法,以便它將解密具有相同ID號碼的消息(我不知道他打算如何執行或激活所述方法)。 這裏是我寫的: 在數據模型:從mvc中的URL中檢索對象

public static void GetMessage (int? MesNum, out string MesSuc) 
{ 
    SqlConnection cnctn = new SqlConnection(cnctnstrng); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Connection = cnctn; 
    cmd.CommandText = "GetMessage"; 
    cmd.Parameters.Add("@LineNum", SqlDbType.Int); 
    SqlDataReader rd; 
    try 
    { 
     cnctn.Open(); 
     cmd.Parameters["@LineNum"].Value = MesNum; 
     rd = cmd.ExecuteReader(); 
     byte[] Message = (byte[])rd["MessageText"]; 
     if (Message != null) 
     { 
      MesSuc = chat.Models.DomainModels.Security.DecryptStringFromBytes(Message); 
     } 
     else 
     { 
      MesSuc = "Unable to decrypt Message"; 
     } 
    } 
    catch 
    { 
     MesSuc = "Unable to decrypt Message"; 
    } 
    finally 
    { 
     cnctn.Close(); 
    } 
} 

在控制器:

public ActionResult singlmsgdecrptn() 
     { 
      string MesSuc; 
      chat.Models.DataModels.userdbmanip.GetMessage(*?*, out MesSuc); 
      return View(MesSuc); 
     } 

是其中數字應該進來 在景觀:

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>singlmsgdecrptn</title> 
</head> 
<body> 
    <div> 
     @ViewBag.MesSuc 
    </div> 
</body> 
</html> 

回答

0

的MVC的默認路由需要和ID可選參數。檢查App_Start文件夾中的RouteConfig.cs。

所以你應該能夠將它作爲一個參數添加到你的控制器動作結果中。

public ActionResult singlmsgdecrptn(int? id) 
     { 
      string MesSuc; 
      chat.Models.DataModels.userdbmanip.GetMessage(id, out MesSuc); 
      return View(MesSuc); 
     } 

另外,不知道你爲什麼在這裏使用可空int,但我效仿了。希望這有幫助,祝你好運。

+0

好吧,現在我只需手動添加一個數字到URL的末尾?如果我按下輸入它應該啓動該方法? –

+0

哦,我正在使用一個空的int,因爲這是老師讓我做的事,以防他不會寫任何東西。真的,我不知道他想讓我做什麼。 那麼,我需要改變的網址,使其工作? –

+0

是的,添加{controllerName}/singlmsgdecrptn/{id}會調用您的方法將id提供給變量。使用可空的int意味着將調用此方法,無論它們是否在URL字符串中提供int或not(null)。假設你沒有另一個同名的方法不需要。因此,如果沒有輸入ID值,該方法仍然會運行併爲GetMessage方法提供一個空值。我不能說這是不是不正確或不正確,因爲我不知道結果應該是什麼。 – Dillon