在控制器中存储整数值,稍后由另一个方法使用

时间:2015-12-07 04:07:34

标签: asp.net asp.net-mvc

从我的控制器我正在调用一个视图。根据控制器中的某些参数,生成视图中的某些部分。

然后在视图中,我有一个按钮,它将控制器调回来创建一个pdf。

pdf还必须显示某个部分 - 基于整数值。我无法做到这一点。

我的控制器调用视图:

    public ActionResult ActionForSubForm5()
        {               
            TempData["sform"] = 5;   
            return PartialView("_VoIPSubform");
        }

控制器中有7种这样的方法,用不同的Tempdata参数调用视图。

稍后在一个完全不同的方法中调用pdf生成部分,我需要该值5.

   rcpt = Methods.CreateVoIPFormPDF(
                ....
                    VoIPSubformId,
                 ...

有没有办法可以存储这个值5供以后使用?

1 个答案:

答案 0 :(得分:1)

您应该从具有创建pdf按钮的视图中发送生成PDF所需的值。

public ActionResult ActionForSubForm5()
{
    TempData["sform"] = 5;
    return PartialView("_VoIPSubform");
}

在partial中,将formId保存在隐藏变量中,以便在用户提交表单时,它将在HttpPost操作方法中可用。

@using (Html.BeginForm("PrintPdf", "Home"))
{
    <input type="hidden" name="formId" value="@TempData["sform"]"/>
    <input type="submit" value="Create PDF" />
}

隐藏字段的name应与您的操作方法参数名称

匹配
[HttpPost]
public ActionResult PrintPdf(int formId)
{
    // to do :Generate PDF from the formId
}
  

调用视图的控制器中有7种这样的方法   具有不同的Tempdata参数。

如果是7种不同的方法,但是所有方法都为PrintPdf方法设置了不同的formId,那么最好创建一个将formId值作为参数的单一操作方法

public ActionResult ActionForSubForm(int id)
{
    TempData["sform"] = id;
    return PartialView("_VoIPSubform");
}