2014-10-17 5 views
1
여기

내가 ASP.NET 내보기에 무엇을 MVC 5 스크립트에서녹아웃에서 ASP.NET MVC에 양식을 제출하면

@model Entities.Coupon 

@using (Html.BeginForm("coupon", "marketing", FormMethod.Post, new { enctype = "multipart/form-data" })) 
{ 
    <div class="scsm-18 scmd-16 sclg-14"> 
     <div class="form-group"> 
      <label>Codes</label> 
      @Html.TextBoxFor(p => p.Code, new { @class = "form-control", @data_bind = "value: Code", @autofocus = true, @maxlength = "50" }) 
     </div> 
     <input type="radio" name="IsPerCentOrDollar" value="1" data-bind="checked: IsPerCentOrDollar" /> 
     <span>PercentageAmount</span> 
     <input type="radio" name="IsPerCentOrDollar" value="2" data-bind="checked: IsPerCentOrDollar" /> 
     <span>DollarAmount</span> 
     <input type="radio" name="IsPerCentOrDollar" value="3" data-bind="checked: IsPerCentOrDollar" /> 
     <span>FreeShipping</span> 
    </div> 

    <div class="panel-footer text-right"> 
    <input type="submit" name="commandType" id="btnSave" class="btn btn-primary" data-bind="click:submit" value="Save" /> 
    </div> 
} 

있는 모든 값을 가져 오지 않습니다

$(document).ready(function() { 
    var viewModel = new CouponViewModel(couponModel); 
    ko.applyBindings(viewModel); 

    function CouponViewModel(data) { 
    self.Code = ko.observable(data.Code); 
    self.IsPerCentOrDollar = ko.observable("1"); 
    self.DiscountLevel = ko.computed(function() { 
     return self.IsPerCentOrDollar(); 
     }); 
    }; 
} 
MVC에서

코드 : 내가 지금 거기에있는 모든의

[HttpPost, ActionName("coupon")] 
public ActionResult coupon(Coupon coupon) 
     { 
      try 
      { 
       // some logic not yet in 
      } 
      catch (Exception ex) 
      { 

      } 
      return View(); 
     } 

.

브라우저 내부의 개발자 도구에서 radio 버튼을 선택하면 self.DiscountLevel 값이 변경됩니다.

제출시 MVC 프런트에서 Code 값이 제공되지만 DiscountLevel 값은 제공되지 않습니다.

도움을 주시면 대단히 감사하겠습니다.

감사합니다.

+2

'DiscountLevel'에 연결된 입력이 필요합니다. –

답변

3

@ StephenMuecke의 의견 (내가 생각하는 요지가 있음)을 확장하겠습니다.

ASP.NET MVC의 기본 모델 바인딩은 요청에있는 값으로 인수 (Coupon)를 채 웁니다. 요청과 함께 양식 요소 만 전송됩니다. DiscountLevel이 전송 될 것으로 예상되지만 사용자 브라우저에있는 자바 스크립트 기능 일뿐입니다. 이 같은

추가 뭔가 즉각적인 문제를 해결할 수 있습니다 :

<input type="hidden" name="DiscountLevel" data-bind="value: DiscountLevel" /> 

하지만 관련 문제를 참고 : 관찰 계산 된 이다과 재산 데 문제가 있습니다. 그러나 이 아닌은 전체적으로 IsPerCentOrDollar에 의존하므로 함께 보내려고합니다. 그냥 서버 쪽 Coupon 클래스가 해당 속성에서 할인 수준을 도출하도록하십시오. 또한 사용자가 숨겨진 입력을 해킹하거나 악의적 인 가치를 전달하는 것을 방지 할 수 있습니다.

+0

그러면 문제가 즉시 해결됩니다. 귀하의 제안도 이행 할 것입니다. 시간 내 줘서 고마워. – Codehelp

관련 문제