model binding در ASP.net MVC

بپرسید

0

{{ digitTrunc(content.likes) }}

سلام.

سناریوی ساده زیر را در نظر بگیرید:

فرمی به صورت زیر داریم که بر روی آن سه عدد تکست باکس قرار داده شده است.

سلام.
سناریوی ساده زیر را در نظر بگیرید:
فرمی به صورت زیر داریم که بر روی آن سه عدد تکست باکس قرار داده شده است.
||http://tosinso.com/files/get/c5657833-b866-42fe-b12f-96996d4e2cd3||
کاربر بعد از پر کردن تکست باکس ها، دکمه Submit را فشار میدهد. بعد از submit کردن فرم، به مقدار Person Id یک واحد اضافه شده و به مقادیر First Name و Last Name واژه ی approved چسبانده شده و سپس به همین فرم بر میگردیم و مقادیر جدید درون تکست باکس های مربوطه قرار داده می شوند.

برای این کار درون پوشه Models یک کلاس به نام Person ایجاد کرده ام.
<c#>
public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
<c#>
همچنین یک controller به نام  HomeController ایجاد کرده ام و درون آن دو action method به صورت زیر قرار داده ام:
<c#>
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult CreatePerson()
    {
        return View(new Person());
    }

    [HttpPost]
    public ActionResult CreatePerson(Person person)
    {
        person.PersonId += 1;
        person.FirstName += - approved;
        person.LastName += - approved;
        return View(person);
    }
}
<c#>

درون پوشه Views نیز یک view به نام CreatePerson به صورت زیر ایجاد کرده ام:
<htm>
@model HelperMethods.Models.Person
@{
    ViewBag.Title = CreatePerson;
    Layout = ~/Views/Shared/_Layout.cshtml;
}

<h2>CreatePerson</h2>

@using (Html.BeginForm(CreatePerson, Home))
{
    <div class=dataElem>
        @Html.TextBoxFor(m => m.PersonId)
    </div>

    <div class=dataElem>
        <label>First Name:</label>
        @Html.TextBoxFor(m => m.FirstName)
    </div>

    <div class=dataElem>
        <label>Last Name:</label>
        @Html.TextBoxFor(m => m.LastName)
    </div>

    <input type=submit name=btnSubmit value=Submit />
}
<htm>
اما وقتی برنامه را اجرا کرده و فیلدها را پر می کنم، بعد از سابمیت کردن فرم مشاهده می شود که مقادیر قبلی همچنان درون درون تکست باکس ها بدون تغییر قرار گرفته اند (عکس زیر)
||http://tosinso.com/files/get/0b82a9d3-8acc-455a-8838-65713f47aac6||
جالب اینجاست که اگر به جای استفاده از helper methodها، در view از تگ های HTML به صورت زیر استفاده کنم، به نتیجه مورد نظرم میرسم. (تصویر آخر)
<htm>
@model HelperMethods.Models.Person
@{
    ViewBag.Title = CreatePerson;
    Layout = ~/Views/Shared/_Layout.cshtml;
}

<h2>CreatePerson</h2>

@using (Html.BeginForm(CreatePerson, Home))
{
    <div class=dataElem>
        <label>Person Id:</label>
        <input type=text name=PersonId value=@Model.PersonId />
    </div>

    <div class=dataElem>
        <label>First Name:</label>
        <input type=text name=FirstName value=@Model.FirstName />
    </div>

    <div class=dataElem>
        <label>Last Name:</label>
        <input type=text name=LastName value=@Model.LastName />
    </div>

    <input type=submit name=btnSubmit value=Submit />
}
<htm>
||http://tosinso.com/files/get/92665940-764e-4c77-9a55-a42f17f88d69||
به نظر شما علت این رخداد در چیست؟

کاربر بعد از پر کردن تکست باکس ها، دکمه Submit را فشار میدهد. بعد از submit کردن فرم، به مقدار Person Id یک واحد اضافه شده و به مقادیر First Name و Last Name واژه ی approved چسبانده شده و سپس به همین فرم بر میگردیم و مقادیر جدید درون تکست باکس های مربوطه قرار داده می شوند.

برای این کار درون پوشه Models یک کلاس به نام Person ایجاد کرده ام.

public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

همچنین یک controller به نام HomeController ایجاد کرده ام و درون آن دو action method به صورت زیر قرار داده ام:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult CreatePerson()
    {
        return View(new Person());
    }

    [HttpPost]
    public ActionResult CreatePerson(Person person)
    {
        person.PersonId += 1;
        person.FirstName += "- approved";
        person.LastName += "- approved";
        return View(person);
    }
}

درون پوشه Views نیز یک view به نام CreatePerson به صورت زیر ایجاد کرده ام:

@model HelperMethods.Models.Person
@{
    ViewBag.Title = "CreatePerson";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>CreatePerson</h2>

@using (Html.BeginForm("CreatePerson", "Home"))
{
    <div class="dataElem">
        @Html.TextBoxFor(m => m.PersonId)
    </div>

    <div class="dataElem">
        <label>First Name:</label>
        @Html.TextBoxFor(m => m.FirstName)
    </div>

    <div class="dataElem">
        <label>Last Name:</label>
        @Html.TextBoxFor(m => m.LastName)
    </div>

    <input type="submit" name="btnSubmit" value="Submit" />
}

اما وقتی برنامه را اجرا کرده و فیلدها را پر می کنم، بعد از سابمیت کردن فرم مشاهده می شود که مقادیر قبلی همچنان درون درون تکست باکس ها بدون تغییر قرار گرفته اند (عکس زیر)

سلام.
سناریوی ساده زیر را در نظر بگیرید:
فرمی به صورت زیر داریم که بر روی آن سه عدد تکست باکس قرار داده شده است.
||http://tosinso.com/files/get/c5657833-b866-42fe-b12f-96996d4e2cd3||
کاربر بعد از پر کردن تکست باکس ها، دکمه Submit را فشار میدهد. بعد از submit کردن فرم، به مقدار Person Id یک واحد اضافه شده و به مقادیر First Name و Last Name واژه ی approved چسبانده شده و سپس به همین فرم بر میگردیم و مقادیر جدید درون تکست باکس های مربوطه قرار داده می شوند.

برای این کار درون پوشه Models یک کلاس به نام Person ایجاد کرده ام.
<c#>
public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
<c#>
همچنین یک controller به نام  HomeController ایجاد کرده ام و درون آن دو action method به صورت زیر قرار داده ام:
<c#>
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult CreatePerson()
    {
        return View(new Person());
    }

    [HttpPost]
    public ActionResult CreatePerson(Person person)
    {
        person.PersonId += 1;
        person.FirstName += - approved;
        person.LastName += - approved;
        return View(person);
    }
}
<c#>

درون پوشه Views نیز یک view به نام CreatePerson به صورت زیر ایجاد کرده ام:
<htm>
@model HelperMethods.Models.Person
@{
    ViewBag.Title = CreatePerson;
    Layout = ~/Views/Shared/_Layout.cshtml;
}

<h2>CreatePerson</h2>

@using (Html.BeginForm(CreatePerson, Home))
{
    <div class=dataElem>
        @Html.TextBoxFor(m => m.PersonId)
    </div>

    <div class=dataElem>
        <label>First Name:</label>
        @Html.TextBoxFor(m => m.FirstName)
    </div>

    <div class=dataElem>
        <label>Last Name:</label>
        @Html.TextBoxFor(m => m.LastName)
    </div>

    <input type=submit name=btnSubmit value=Submit />
}
<htm>
اما وقتی برنامه را اجرا کرده و فیلدها را پر می کنم، بعد از سابمیت کردن فرم مشاهده می شود که مقادیر قبلی همچنان درون درون تکست باکس ها بدون تغییر قرار گرفته اند (عکس زیر)
||http://tosinso.com/files/get/0b82a9d3-8acc-455a-8838-65713f47aac6||
جالب اینجاست که اگر به جای استفاده از helper methodها، در view از تگ های HTML به صورت زیر استفاده کنم، به نتیجه مورد نظرم میرسم. (تصویر آخر)
<htm>
@model HelperMethods.Models.Person
@{
    ViewBag.Title = CreatePerson;
    Layout = ~/Views/Shared/_Layout.cshtml;
}

<h2>CreatePerson</h2>

@using (Html.BeginForm(CreatePerson, Home))
{
    <div class=dataElem>
        <label>Person Id:</label>
        <input type=text name=PersonId value=@Model.PersonId />
    </div>

    <div class=dataElem>
        <label>First Name:</label>
        <input type=text name=FirstName value=@Model.FirstName />
    </div>

    <div class=dataElem>
        <label>Last Name:</label>
        <input type=text name=LastName value=@Model.LastName />
    </div>

    <input type=submit name=btnSubmit value=Submit />
}
<htm>
||http://tosinso.com/files/get/92665940-764e-4c77-9a55-a42f17f88d69||
به نظر شما علت این رخداد در چیست؟

جالب اینجاست که اگر به جای استفاده از helper methodها، در view از تگ های HTML به صورت زیر استفاده کنم، به نتیجه مورد نظرم میرسم. (تصویر آخر)

@model HelperMethods.Models.Person
@{
    ViewBag.Title = "CreatePerson";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>CreatePerson</h2>

@using (Html.BeginForm("CreatePerson", "Home"))
{
    <div class="dataElem">
        <label>Person Id:</label>
        <input type="text" name="PersonId" value="@Model.PersonId" />
    </div>

    <div class="dataElem">
        <label>First Name:</label>
        <input type="text" name="FirstName" value="@Model.FirstName" />
    </div>

    <div class="dataElem">
        <label>Last Name:</label>
        <input type="text" name="LastName" value="@Model.LastName" />
    </div>

    <input type="submit" name="btnSubmit" value="Submit" />
}

سلام.
سناریوی ساده زیر را در نظر بگیرید:
فرمی به صورت زیر داریم که بر روی آن سه عدد تکست باکس قرار داده شده است.
||http://tosinso.com/files/get/c5657833-b866-42fe-b12f-96996d4e2cd3||
کاربر بعد از پر کردن تکست باکس ها، دکمه Submit را فشار میدهد. بعد از submit کردن فرم، به مقدار Person Id یک واحد اضافه شده و به مقادیر First Name و Last Name واژه ی approved چسبانده شده و سپس به همین فرم بر میگردیم و مقادیر جدید درون تکست باکس های مربوطه قرار داده می شوند.

برای این کار درون پوشه Models یک کلاس به نام Person ایجاد کرده ام.
<c#>
public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
<c#>
همچنین یک controller به نام  HomeController ایجاد کرده ام و درون آن دو action method به صورت زیر قرار داده ام:
<c#>
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult CreatePerson()
    {
        return View(new Person());
    }

    [HttpPost]
    public ActionResult CreatePerson(Person person)
    {
        person.PersonId += 1;
        person.FirstName += - approved;
        person.LastName += - approved;
        return View(person);
    }
}
<c#>

درون پوشه Views نیز یک view به نام CreatePerson به صورت زیر ایجاد کرده ام:
<htm>
@model HelperMethods.Models.Person
@{
    ViewBag.Title = CreatePerson;
    Layout = ~/Views/Shared/_Layout.cshtml;
}

<h2>CreatePerson</h2>

@using (Html.BeginForm(CreatePerson, Home))
{
    <div class=dataElem>
        @Html.TextBoxFor(m => m.PersonId)
    </div>

    <div class=dataElem>
        <label>First Name:</label>
        @Html.TextBoxFor(m => m.FirstName)
    </div>

    <div class=dataElem>
        <label>Last Name:</label>
        @Html.TextBoxFor(m => m.LastName)
    </div>

    <input type=submit name=btnSubmit value=Submit />
}
<htm>
اما وقتی برنامه را اجرا کرده و فیلدها را پر می کنم، بعد از سابمیت کردن فرم مشاهده می شود که مقادیر قبلی همچنان درون درون تکست باکس ها بدون تغییر قرار گرفته اند (عکس زیر)
||http://tosinso.com/files/get/0b82a9d3-8acc-455a-8838-65713f47aac6||
جالب اینجاست که اگر به جای استفاده از helper methodها، در view از تگ های HTML به صورت زیر استفاده کنم، به نتیجه مورد نظرم میرسم. (تصویر آخر)
<htm>
@model HelperMethods.Models.Person
@{
    ViewBag.Title = CreatePerson;
    Layout = ~/Views/Shared/_Layout.cshtml;
}

<h2>CreatePerson</h2>

@using (Html.BeginForm(CreatePerson, Home))
{
    <div class=dataElem>
        <label>Person Id:</label>
        <input type=text name=PersonId value=@Model.PersonId />
    </div>

    <div class=dataElem>
        <label>First Name:</label>
        <input type=text name=FirstName value=@Model.FirstName />
    </div>

    <div class=dataElem>
        <label>Last Name:</label>
        <input type=text name=LastName value=@Model.LastName />
    </div>

    <input type=submit name=btnSubmit value=Submit />
}
<htm>
||http://tosinso.com/files/get/92665940-764e-4c77-9a55-a42f17f88d69||
به نظر شما علت این رخداد در چیست؟

به نظر شما علت این رخداد در چیست؟

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

پاسخ ها به این سوال

پاسخ ها به این سوال

{{ digitTrunc(post.likes) }}

این پست در تاریخ {{ dateString(new Date(post.deleteDate)) }} توسط {{ post.deletedByUser }} حذف شده است.

دلیل حذف: {{ post.deleteReason ?? 'نامشخص' }}

{{ err }}
{{ post.userAchivements.rhodiumAchievements }}
{{ post.userAchivements.platinumAchievements }}
{{ post.userAchivements.goldAchievements }}
{{ post.userAchivements.silverAchievements }}
{{ post.userAchivements.bronzeAchievements }}
{{ timeSince(new Date(post.date)) }} قبل

برای ثبت پاسخ خود در وب سایت وارد حساب کاربری خود شوید
قابلیت ارسال مطلب توسط مدیریت سایت غیر فعال شده است