Asp.net 将迄今为止输入的数据传递给控制器

Asp.net 将迄今为止输入的数据传递给控制器,asp.net,razor,asp.net-mvc-4,Asp.net,Razor,Asp.net Mvc 4,在一个表单中,我有不同的字段(姓名、年龄等)和上传图像的可能性。我想从另一个角度来认识这一点。问题是,当我想要更改控制器时,到目前为止生成的数据没有传递给控制器。下面是我的代码的一个小示例: @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Person</legend> @Html.EditorFor(mod

在一个表单中,我有不同的字段(姓名、年龄等)和上传图像的可能性。我想从另一个角度来认识这一点。问题是,当我想要更改控制器时,到目前为止生成的数据没有传递给控制器。下面是我的代码的一个小示例:

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Person</legend>
        @Html.EditorFor(model => model.Name)
        @Html.EditorFor(model => model.Age)

        <img src="@Url.Content(Model.ImagePath)" alt="Image" class="imagePreview" />
        <li>
            @Html.ActionLink("Upload a pic from you!", "UploadImage", new { model = Model }, null)
            @* This is the 'problematic' action *@
        </li>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

如何在不使用提交按钮的情况下获取输入的信息?

请查看Bryan Sampica使用MVC进行的异步文件上传。我们只是使用它来实现平滑的异步文件上传体验,所以我们不必离开页面。这就解决了如何持久化瞬态数据的问题。如果用户使用的是现代浏览器(IE 10+、Chrome、FF等),进度条实际上会显示文件上传进度。设置起来相当容易,但是,如果您严格按照说明操作,确实需要向项目中添加webAPI控制器

你能再具体一点吗?你是说你想使用不同的控制器来上传照片,但是你也想将表单上的数据(姓名、地址等)传递给单独的上传控制器?是的,这是正确的。我想在上传pic时保留瞬态数据。保存完照片后,我想返回调用页面,填写用户迄今为止输入的数据。Rico,听起来您想在提交表单之前执行图片的异步上载。如果正确的话?我同意Dave A的观点。我认为HTML.ActionLink总是会对单独的控制器进行同步调用,这将使您远离表单。因此,您需要通过类似jqueryajax调用的方式将该位异步,以便在照片上载完成时保留表单数据并将其提交给第一个控制器。
public ActionResult UploadImage(Person model)
{
    // properties in the passed model are not set
    return RedirectToAction("UploadImage", "UploadImage");
}