مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

نمایش داده در textbox در mvc

  • پنجشنبه 24 فروردین 1396
  • 08:20
تشکر میکنم

سلام

یک کنترل داریم  

مانند کنترلر زیر

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Login(UserLogin userLogin)
        {
            if(user==userLogin.user && pass==userLogin.pass)
            {
                return RedirectToAction("ChangePassword");
            }
        }

که کاربر را انتقال می دهد به صفحه 

ChangePassword

و کنترلهای تغییر پسورد هم بصورت زیر است

		[HttpGet]
        public ActionResult ChangePassword()
        {
            if (HttpContext.GetCookieValue("Existence") != "")
            {
                return View();
            }
            else
            {
                return RedirectToAction("Login");
            }
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult ChangePassword(UserChangePassword userChangePassword)
        {
            var user = new UserRepositories();
            if (ModelState.IsValid)
            {
                if (user.Update(UserMapper.UserChangePassword(userChangePassword)))
                {
                    return RedirectToAction("Index");
                }
                else
                {
                    return View("ChangePassword");
                }
            }
            else
            {
                return View("Create");
            }
        }

و صفحه تغییر پسورد هم بصورت زیراست

@model Models.EntityView.UserChangePassword
@{
    ViewBag.Title = "ChangePassword";
}

<h2>ChangePassword</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <div class="form-horizontal">
        @Html.ValidationSummary(true)

        <div class="form-group">
            <div class="col-md-10">
                @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" , @Value = ViewBag._userName } })
                @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
            </div>
            @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
        </div>
        <div class="form-group">
            <div class="col-md-10">
                @Html.EditorFor(model => model.OldPassword, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
            </div>
            @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
        </div>

        <div class="form-group">
            <div class="col-md-10">
                @Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Password, "", new { @class = "text-danger" })
            </div>
            @Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label col-md-2" })
        </div>
        <div class="form-group">
            <div class="col-md-10">
                @Html.EditorFor(model => model.ConfirmPassword, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.ConfirmPassword, "", new { @class = "text-danger" })
            </div>
            @Html.LabelFor(model => model.ConfirmPassword, htmlAttributes: new { @class = "control-label col-md-2" })
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

حال سوال من این است که چگونه  وقتی می خواهم بروم صفحه تغییر پسورد تکس باکس UserName نام کاربری را دریافت کند و بصورت read only باشد 

باتشکر

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 24 فروردین 1396
  • 08:55

داخل مدل صفحه نام کاربری را پاس بدید خودش داخل textbox قرار میگیره و بعد خاصیت readonly رو به editorfor بدید

کاربر سایت

iran

عضویت از 1394/01/31

  • پنجشنبه 24 فروردین 1396
  • 09:07

سلام دقیقا کجا مدل وچطوری؟

باتشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 24 فروردین 1396
  • 09:10

در اکشن get که view را لود میکنه

کاربر سایت

iran

عضویت از 1394/01/31

  • پنجشنبه 24 فروردین 1396
  • 10:41

سلام

من با کد زیر مشکل را حل کردم

var changePassword = new UserChangePassword
                            {
                                UserName = userLogin.UserName,
                                OldPassword = userLogin.Password,
                                HashCode = hash
                            };
                            TempData["PasswordChange"] = changePassword;

و

  [HttpGet]
        public ActionResult ChangePassword()
        {
           var userChangePassword = TempData["PasswordChange"] as UserChangePassword;
           return View(userChangePassword);
        }

اما مشکل جدید اینه که وقتی وارد صفحه مورد نظر می شویم مقدار model.OldPassword درصورتیکه من می خواهم خالی باشدmodel.OldPassword برای حل این مشکل چکار باید بکنم

باتشکر

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 24 فروردین 1396
  • 10:44

در مدل این فیلد را پر نکنید

شما الان مقدار دهی کردید

کاربر سایت

iran

عضویت از 1394/01/31

  • پنجشنبه 24 فروردین 1396
  • 10:54

سلام

بله مقدار دهی کرده ام 

درصورتیکه مقدار دهی نکنم چگونه می توان آنرا به سمت کنترلر مورد نظرپاس بدهم برای چک کردن برابر بودن پسورد های قدیمی

 <div class="form-group">
            <div class="col-md-10">
                @Html.EditorFor(model => model.OldPassword, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.OldPassword, "", new { @class = "text-danger" })
            </div>
            @Html.LabelFor(model => model.OldPassword, htmlAttributes: new { @class = "control-label col-md-2" })
        </div>

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 24 فروردین 1396
  • 10:56

چک کردن پسورد قدیمی باید سمت کنترلر و در متد post انجام بشه نه سمت کلاینت که اصلا منطقی نیست و راحت میتونه بدست بیاره

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)