C# 从视图到HttpGet控制器操作方法获取值

C# 从视图到HttpGet控制器操作方法获取值,c#,asp.net-mvc,asp.net-ajax,C#,Asp.net Mvc,Asp.net Ajax,这里是我的视图。我想将TempData[Id]传递给HttpGet控制器操作方法索引。如何传递此值。请帮助我。提前谢谢 @if (TempData["Id"] != null) { using (Html.BeginForm("Index", "QuestionnaireController", FormMethod.Get)) { <p>@SixSeconds.App_GlobalResources.Frontend.DeleteQuestionnaire</p>

这里是我的视图。我想将TempData[Id]传递给HttpGet控制器操作方法索引。如何传递此值。请帮助我。提前谢谢

@if (TempData["Id"] != null)
{
using (Html.BeginForm("Index", "QuestionnaireController", FormMethod.Get))
{
   <p>@SixSeconds.App_GlobalResources.Frontend.DeleteQuestionnaire</p> <input type = "submit" value = "@SixSeconds.App_GlobalResources.Frontend.OK"/>
}
}

 [HttpGet]
 public ActionResult Index(string idQ, string idTT, string easyLoad)
    {
        Project project = _getProject(idQ);
        ViewBag.LanguageCode = project.ItemLanguage.Code;
        ViewBag.projectType = project.ProjectType.ToString();
        per ricevere un questionario
        int reportCredits = 0;
        foreach (ProjectReportOption pro in project.ProjectReportOptions)
        {
            reportCredits += pro.Display && pro.ReportType != null ? pro.ReportType.Credits : 0;
        }
@if(TempData[“Id”!=null)
{
使用(Html.BeginForm(“Index”,“QuestionnaireController”,FormMethod.Get))
{
@六秒钟。App_GlobalResources.Frontend.deleteQuestionly

} } [HttpGet] 公共操作结果索引(字符串idQ、字符串idTT、字符串easyLoad) { 项目=_getProject(idQ); ViewBag.LanguageCode=project.ItemLanguage.Code; ViewBag.projectType=project.projectType.ToString(); 每米 int reportCredits=0; foreach(project.ProjectReportOptions中的ProjectReportOption pro) { reportCredits+=pro.Display&&pro.ReportType!=null?pro.ReportType.Credits:0; }
您可以将数据作为路由值传递:

@using (Html.BeginForm("Index", "QuestionnaireController", new { idQ = TempData["Id"] }, FormMethod.Get))
{
}
您需要定义路线:

routes.MapRoute("NameOfThisRoute",
                "QuestionnaireController/Index/{idQ}",
                 new { controller = "QuestionnaireController", action = "Index" });

感谢您的回复。我使用了该技术,但它提供了空例外。当我将这些值获取到HttpPost控制器方法时,工作正常,但我想获取HttpGet控制器操作方法。我更新了我的答案,尝试将数据作为路由值传递。此外,基于您的全局资源,此表单似乎用于删除调查问卷?仅此而已也就是说,通过GET方法更改数据(删除)不是一个好做法。使用POST会更好/更安全。它有几个优点:您不必添加特殊路由,您可以使用
AntiForgeryToken
使其更安全。但是,无论如何,如果您真的想要GET,上面的方法将适用于GET。