Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 不方便将文件上载到服务器并使用TempData_Asp.net Mvc_Asp.net Mvc 3_Tempdata - Fatal编程技术网

Asp.net mvc 不方便将文件上载到服务器并使用TempData

Asp.net mvc 不方便将文件上载到服务器并使用TempData,asp.net-mvc,asp.net-mvc-3,tempdata,Asp.net Mvc,Asp.net Mvc 3,Tempdata,我正在尝试使用Uploadify将文件上载到服务器,但没有使用TempData在控制器之间传递变量,并且没有发现错误 我正在尝试将变量fileName和file以及控制器“GetFile”的TempData传递给控制器“ModelCreate” 控制器“GetFile”工作得很好,但是当我检查控制器“ModelCreate”中的“date1”和“date2”的值时,它是空的 我只想将文件保存在控制器“ModelCreate”中 为什么“date1”和“date2”为空 祝福没有足够的信息来回答这

我正在尝试使用Uploadify将文件上载到服务器,但没有使用TempData在控制器之间传递变量,并且没有发现错误

我正在尝试将变量fileName和file以及控制器“GetFile”的TempData传递给控制器“ModelCreate”

控制器“GetFile”工作得很好,但是当我检查控制器“ModelCreate”中的“date1”和“date2”的值时,它是空的

我只想将文件保存在控制器“ModelCreate”中

为什么“date1”和“date2”为空


祝福

没有足够的信息来回答这个问题。根据评论部分的要求,我将提供一个完整的示例,演示一个表单,允许用户填写两个输入字段并上传一个文件

一如既往,我们从定义视图模型开始,该模型将反映我们希望在视图上显示的信息:

public class MyViewModel
{
    [Required]
    public string TextField { get; set; }

    [DataType(DataType.MultilineText)]
    public string TextAreaField { get; set; }

    public bool CheckBoxField { get; set; }

    [Required]
    public HttpPostedFileBase FileField { get; set; }
}
然后我们可以有一个具有2个操作的控制器:一个简单显示表单的GET操作和一个提交表单时处理表单信息的POST操作:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        if (!ModelState.IsValid)
        {
            // there were validation errors => redisplay the view
            return View(model);
        }

        // at this stage the model is valid => we could do some processing

        // first let's save the file
        var appData = Server.MapPath("~/app_data");
        var file = Path.Combine(appData, Path.GetFileName(model.FileField.FileName));
        model.FileField.SaveAs(file);

        // then we could process the other properties
        // ...

        return Content("Thanks for submitting the data");
    }
}
最后是视图模型顶部的强类型视图:

@model MyViewModel

@Html.ValidationSummary(false)

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div>
        @Html.EditorFor(x => x.TextField)
        @Html.ValidationMessageFor(x => x.TextField)
    </div>

    <div>
        @Html.EditorFor(x => x.TextAreaField)
        @Html.ValidationMessageFor(x => x.TextAreaField)
    </div>

    <div>
        @Html.CheckBoxFor(x => x.CheckBoxField)
        @Html.ValidationMessageFor(x => x.CheckBoxField)
    </div>

    <div>
        @Html.LabelFor(x => x.FileField)
        @Html.TextBoxFor(x => x.FileField, new { type = "file" })
    </div>

    <button type="submit">OK</button>
}
@model MyViewModel
@Html.ValidationSummary(false)
@使用(Html.BeginForm(null,null,FormMethod.Post,new{enctype=“multipart/formdata”}))
{
@EditorFor(x=>x.TextField)
@Html.ValidationMessageFor(x=>x.TextField)
@EditorFor(x=>x.TextAreaField)
@Html.ValidationMessageFor(x=>x.TextAreaField)
@Html.CheckBoxFor(x=>x.CheckBoxField)
@Html.ValidationMessageFor(x=>x.CheckBoxField)
@LabelFor(x=>x.FileField)
@Html.TextBoxFor(x=>x.FileField,新的{type=“file”})
好啊
}

您在问ModelCreate的输出有什么问题,但没有显示返回值@tzerb I更新了这个问题:上传最初调用哪个控制器操作?如何从第一个操作传递到ModelCreate操作?你在重定向吗?您显示的
GetFile
方法是什么?谁在调用此方法?@Darin Dimitrov最初通过Uploadify调用“GetFile”,使用此控制器没有问题,我对TempData有问题:(但是
GetFile
看起来不像控制器操作。控制器操作必须返回ActionResults。
GetFile
只返回一个字符串。另外,与
ModelCreate
操作有什么关系?如何调用此操作?
@model MyViewModel

@Html.ValidationSummary(false)

@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <div>
        @Html.EditorFor(x => x.TextField)
        @Html.ValidationMessageFor(x => x.TextField)
    </div>

    <div>
        @Html.EditorFor(x => x.TextAreaField)
        @Html.ValidationMessageFor(x => x.TextAreaField)
    </div>

    <div>
        @Html.CheckBoxFor(x => x.CheckBoxField)
        @Html.ValidationMessageFor(x => x.CheckBoxField)
    </div>

    <div>
        @Html.LabelFor(x => x.FileField)
        @Html.TextBoxFor(x => x.FileField, new { type = "file" })
    </div>

    <button type="submit">OK</button>
}