> 백엔드 개발 > C++ > MVC에서 리디렉션 후 'Latitude'대신 'Latitude2'가 표시되는 이유는 무엇입니까?

MVC에서 리디렉션 후 'Latitude'대신 'Latitude2'가 표시되는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-02-01 08:21:10
원래의
265명이 탐색했습니다.

Why Does My TextBoxFor Display

MVC TextBoxFor : 초기 대 업데이트 된 값

이 예제는 ASP.NET MVC 응용 프로그램에서 일반적인 문제를 보여줍니다. 여기서 는 업데이트 된 값 대신 예상치 못한 초기 값을 표시합니다. MVC 조치 및보기 시나리오를 검토하자 : 컨트롤러 동작 :

보기 :

TextBoxFor 모델 :

문제 : ( "latitude2"로 위도를 설정 한 후 로 리디렉션 한 후 뷰는 예상되는 "위도"대신 "latitude2"를 표시합니다. . 설명 : 모델이있는 는 데이터를 경로 값으로 전달합니다. 그런 다음 기본 모델 바인더는이 값 ( "latitude2")으로
<code class="language-csharp">[HttpPost]
public ActionResult SomeInformation()
{
    var test1 = new DataSites { Latitude = "LATITUDE2" };
    return RedirectToAction("Index", test1);
}

[HttpPost]
public ActionResult Index(DataSites dataSiteList)
{
    if (dataSiteList.Latitude != null)
    {
        var test = new DataSites { Latitude = "LATITUDE" };
        return View(test);
    }
    return View(dataSiteList);
}</code>
로그인 후 복사
를 채 웁니다.

동작이 새 값 ( "Latitude")을 할당하려고 시도하더라도 기존 값은 우선합니다. .

솔루션 : 두 가지 접근법은 다음을 효과적으로 해결합니다
<code class="language-csharp">@model miniproj2.Models.DataSites

<p>
    @Html.TextBoxFor(x => x.Latitude)
</p></code>
로그인 후 복사
CLEAR ModelState : action에서 새 값을 할당하기 전에

를 지우십시오 :

모델 바인딩 방지 :
<code class="language-csharp">public class DataSites
{
    public string Latitude { get; set; }
}</code>
로그인 후 복사

동작에서 직접 새 인스턴스를 초기화하여 모델 바인딩을 완전히 우회합니다. /Home/SomeInformation 이러한 솔루션 중에서 선택하는 것은 동작 내의 다른 목적으로 Index의 데이터에 액세스 해야하는지 여부에 따라 다릅니다. 그렇지 않은 경우, 두 번째 솔루션 (모델 바인딩 방지)은 더 깨끗하고 효율적입니다. 그렇지 않으면 지우기가 필요합니다

위 내용은 MVC에서 리디렉션 후 'Latitude'대신 'Latitude2'가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿