2017-09-14 5 views
0

가 나는 FormMethod 포스트에 문제가 반환, 나는 하나 개의 값 (ID)를 게시하고 세션 변수에 저장하기 위해 노력하고있어,하지만 값은 0을 반환FormMethod.Post 0

이것은 내 암호.

@foreach (var item in Model) 
       { 
        using (@Html.BeginForm("Index", "ProductSelec", FormMethod.Post)) 
        { 

         @Html.HiddenFor(modelItem => item.id, new { value = "@Html.DisplayFor(modelItem => item.id)" }) 

         <div class="AppOpt"> 
          <button type="submit" name="submit" style="background-image: url('../Content/ICONS/SystemApp/@Html.DisplayFor(modelItem => item.img)');border-radius: 20px;background-size: cover;background-repeat: no-repeat;" class="AppImg"> 
           <div class="OptNameRec"> 
            <div class="OptIcon"> 
             <img src='~/Content/ICONS/@Html.DisplayFor(modelItem => item.icon)'> 
            </div> 
            <div> 
             <p>@Html.DisplayFor(modelItem => item.nombre)</p> 
            </div> 
            <div class="clear"></div> 
           </div> 
           <div class="OptImage"></div> 
          </button> 
         </div> 
        } 
       } 

양식은 foreach 안에 있습니다. DB에서 dinamically 요소를 생성하기 때문에 양식이 foreach 안에 있습니다.

클릭하여 item.id를 저장하고 싶습니다.

내 컨트롤러

 public ActionResult Index() 
    { 
     return View(db.aplicaciones.ToList()); 
    } 

    public ActionResult ProductFamily() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public int Index(aplicaciones aplicaciones) 
    { 
     Session["appID"] = aplicaciones.id; 

     return aplicaciones.id; 

    } 

이며,이 내 모델입니다.

public partial class aplicaciones 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public aplicaciones() 
    { 
     this.appNfam = new HashSet<appNfam>(); 
    } 

    public int id { get; set; } 
    public string nombre { get; set; } 
    public string icon { get; set; } 
    public string img { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<appNfam> appNfam { get; set; } 
} 

다른 모델을 만들려고했지만 추가 할 때 foreach가 데이터베이스에서 값을 읽지 않았습니다.

도와 주시면 감사하겠습니다.

+0

왜 'foreach'앞에 "@"가 있습니까? –

답변

1

변경 컨트롤러의 방법 :

[HttpPost] 
public int Index(int id) 
{ 
    Session["appID"] = id; 

    return id; 
} 

로 당신의 Html.BeginForm 변경 :

@using (Html.BeginForm("Index", "ProductSelec", new { id = item.id },FormMethod.Post, new { }) 

또한 숨겨진 필드를 제거 할 수 있어야 ID 자체가 게시되기 때문에 귀하의 양식 작업에서.

+1

그게 정확히 내가 원하는,하지만 난 내 문제가, 내 Html.BeginForm 뭔가 이상한 일이 내보기에서 단추를로드 한 후 코드를 추가합니다. System.Web.Mvc.Html.MvcForm System.Web.Mvc.Html.MvcForm. 잊어 버려서 대답했습니다. 답장을 보내 주셔서 감사합니다. –

+1

Html.BeginForm 앞에 @를 제거하십시오. 그것은 @using (Html.BeginForm ..... (@ Html.BeginForm .....을 사용하지 않음)을 읽어야합니다. 원래 응답을 업데이트했습니다. – Ratatoskr