Отправка формы приводит к появлению неизвестного кода в URL - PullRequest
0 голосов
/ 26 сентября 2018

Когда я отправляю эту форму,

@model App.Data.ViewModels.ManageUserAccountViewModel
@{
    ViewBag.Title = "Manage";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="col-sm-12">
    <h2>Manage Account</h2>
    <hr />
</div>
@using (Html.BeginForm("Save", @ViewContext.RouteData.Values["controller"].ToString(), FormMethod.Post, new { id = "form" }))
{
    @Html.AntiForgeryToken()
<div class="col-sm-12">
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                @Html.HiddenFor(m => m.CurrentUser.Id)
                @Html.LabelFor(m => m.CurrentUser.FirstName)
                @Html.TextBoxFor(m => m.CurrentUser.FirstName, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUser.FirstName)
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                @Html.LabelFor(m => m.CurrentUser.LastName)
                @Html.TextBoxFor(m => m.CurrentUser.LastName, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUser.LastName)
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                @Html.LabelFor(m => m.CurrentUser.Email)
                @Html.TextBoxFor(m => m.CurrentUser.Email, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUser.Email)
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                @Html.LabelFor(m => m.CurrentUser.UserName)
                @Html.TextBoxFor(m => m.CurrentUser.UserName, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUser.UserName)
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                @Html.LabelFor(m => m.CurrentUser.PhoneNumber)
                @Html.TextBoxFor(m => m.CurrentUser.PhoneNumber, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUser.PhoneNumber)
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                @Html.HiddenFor(m => m.CurrentUserPassword.Id)
                @Html.LabelFor(m => m.CurrentUserPassword.CurrentPassword)
                @Html.PasswordFor(m => m.CurrentUserPassword.CurrentPassword, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUserPassword.CurrentPassword)
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6">
            <div class="form-group">
                @Html.LabelFor(m => m.CurrentUserPassword.NewPassword)
                @Html.PasswordFor(m => m.CurrentUserPassword.NewPassword, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUserPassword.NewPassword)
            </div>
        </div>
        <div class="col-sm-6">
            <div class="form-group">
                @Html.LabelFor(m => m.CurrentUserPassword.ConfirmNewPassword)
                @Html.PasswordFor(m => m.CurrentUserPassword.ConfirmNewPassword, new { @class = "form-control col-sm-12" })
                @Html.ValidationMessageFor(m => m.CurrentUserPassword.ConfirmNewPassword)
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <hr />
        </div>
    </div>
    <div class="row">
        <div class="col-sm-12">
            <div class="form-group">
                <div class="clearfix">
                    <div class="pull-right">
                        <input type="submit" value="Save" class="btn btn-primary" />
                        @Html.ActionLink("Cancel", "Index", @ViewContext.RouteData.Values["controller"].ToString(), new { }, new { @class = "btn btn-outline-secondary" })
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
}

В моем URL появляется куча неизвестных элементов зависимости.Я не уверен, что происходит.Он исчезает, когда я покидаю страницу и перезагружаю страницу..Async.AsyncManager & ActionInvoker = System.Web.Mvc.Async.AsyncControllerActionInvoker & HttpContext = System.Web.HttpContextWrapper & ModelState = System.Web.Mvc.ModelStateDictionary & Profile = System.Web.Profile.DefaultProfile & Request = System.Web.HttpRequestWrapper & Response = System.Web.HttpResponseWrapper & RouteData = System.Web.Routing.RouteData & Server = System.Web.HttpServerUtilityWrapper & Session = System.Web.HttpSessionStateWrapper & TempDataProvider = System.Web.Mvc.SessionStateTempDataProvider & URL = System.Web.Mvc.UrlHelper & User = System.Security.Claims.ClaimsPrincipal & ViewEngineCollection = System.Web.Mvc.ViewEngineCollection & ControllerContext= System.Web.Mvc.ControllerContext & TempData = System.Web.Mvc.TempDataDictionary & ValidateRequest = True & ValueProvider = System.Web.Mvc.ValueProviderCollection & ViewBag = System.Web.Mvc.DynamicViewDataDictionary & ViewData = System.Web.Mvc.ViewDataDictionary

Это мой контроллер

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Save(ManageUserAccountViewModel Input)
    {
        if (!ModelState.IsValid)
        {
            return View("Index", Input);
        }
        UpdateUserViewModel uuvm = new UpdateUserViewModel
        {
            Id = Input.CurrentUser.Id,
            Email = Input.CurrentUser.Email,
            UserName = Input.CurrentUser.UserName,
            PhoneNumber = Input.CurrentUser.PhoneNumber,
            FirstName = Input.CurrentUser.FirstName,
            LastName = Input.CurrentUser.LastName
        };
        usersData.Update(uuvm);
        if (Input.CurrentUserPassword.CurrentPassword != null)
        {
            usersData.UpdateUserPassword(Input.CurrentUserPassword);
        }
        TempData["Success"] = "Profile "+AspNetEventLogs.Update;
        return RedirectToAction("Index", this);
    }

Я не уверен, что я могу сделать, чтобы удалить его ине видел, чтобы это случилось где-то еще.

1 Ответ

0 голосов
/ 26 сентября 2018

Проблема вызвана тем, что

return RedirectToAction("Index", this);

, где this - это контроллер (и его значения маршрута для его свойств генерируются)

Это должно быть просто

return RedirectToAction("Index");

или если вы хотите передать модель методу Index(), тогда

return RedirectToAction("Index", Input);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...