powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / 2 subminta на разные события
1 сообщений из 1, страница 1 из 1
2 subminta на разные события
    #39565167
Crazy_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрейшего!

Возник такой вопрос как правильнее реализовать.

Имеем форму, в которую пользователи вносят некие данные, данных много и у пользователей есть некая html с частью данных.
Задача облегчить жизнь пользователям.

Появилась мысль сделать следующее, при загрузке файла отправлять его и текущую модель данных на сервер, где
1) парсить файл,
2) вычленять из него данные,
3) обновлять модель,
4 )возвращать пользователю форму с обновленной моделью.

В итоге додумался до такого, на форме две кнопки с сабмитами и разделение их по атрибутам (выискал где-то на форуме)
т.е. имеем
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
  public class HttpParamActionAttribute : ActionNameSelectorAttribute
    {
        public override bool IsValidName(ControllerContext controllerContext, string actionName, MethodInfo methodInfo)
        {
            if (actionName.Equals(methodInfo.Name, StringComparison.InvariantCultureIgnoreCase))
                return true;

            var request = controllerContext.RequestContext.HttpContext.Request;
            return request[methodInfo.Name] != null;
        }
    }



так же имеем два POST метода
Код: c#
1.
2.
3.
4.
5.
6.
7.
[Helpers.HttpParamAction]
[HttpPost]
public ActionResult UploadFromFile(MeasurementValues model, System.Web.HttpPostedFileBase file)
        {
            // ... 
            return View("CreateOrEdit", model);
        }


Код: c#
1.
2.
3.
4.
5.
6.
7.
[Helpers.HttpParamAction]
[HttpPost]
public ActionResult Save(MeasurementValues model)
        {
            // ...
            return RedirectToAction("Index", new { DepID = mv.DepartmentId });
        }



Модель
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    public partial class MeasurementValues
    {
        public DateTime Date { get; set; }
        public int WorkshiftId { get; set; }
        public int DepartmentId { get; set; }
        public string Username { get; set; }
        public IEnumerable<MeasurementValue> Values { get; set; }
        public string Remark { get; set; }
        public int RemarkId { get; set; }
    }

    public partial class MeasurementValue
    {
        public int FlowId { get; set; }
        public String FlowName { get; set; }
        public String FlowEd { get; set; }
        public double ValueMin { get; set; }
        public double ValueMax { get; set; }
        public double Value { get; set; }
        public int? FlowGOrderNum { get; set; }
        public int FlowOrderNum { get; set; }
        public long MeasuringId { get; set; }
    }



форма в view объявлена как
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<form action="" method="post" enctype="multipart/form-data">

    @Html.ValidationSummary(true)

    <div class="form-actions">
        <label for="file">Filename:</label>
        <input type="file" name="file" id="file" />
        <button type="submit" name="UploadFromFile" value="UploadFromFile" class="btn btn-primary">Сохранить</button>
    </div>

    <fieldset class="form-horizontal">
        <legend>@ViewBag.ActionName <small>@Model.Date.ToShortDateString(), @ViewBag.Workshift, @ViewBag.Department, @ViewBag.RoleID</small></legend>
        <input type="hidden" value='@Model.Date.ToShortDateString()' />
        @Html.HiddenFor(model => model.DepartmentId)
        @Html.HiddenFor(model => model.WorkshiftId)
        @Html.HiddenFor(model => model.Username)
        <table class="table table-striped table-hover" style="width:100%;">
            <thead class="header">
                <tr>
                    <th>п/п</th>
                    <th>Наименование</th>
                    <th>Значение</th>
                    <th></th>
                </tr>
            </thead>
            @Html.EditorFor(model => model.Values)
        </table>

        <p>Пояснение</p>
        @Html.HiddenFor(model => model.RemarkId)
        @Html.TextAreaFor(model => model.Remark)
        <div class="form-actions">
            <button type="submit" name="Save" value="Save" class="btn btn-primary">Сохранить</button>
            @Html.ActionLink("Отмена", "Index", new { DepID = Model.DepartmentId }, new { @class = "btn " })
        </div>
    </fieldset>
</form>



собственно, работает все кроме передачи файла в System.Web.HttpPostedFileBase file, туда упорно приходит null.
Вопрос кто виноват и что делать как заставить это работать, или тыкните носом в правильный путь :)
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / 2 subminta на разные события
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]