2015-01-09 10 views
1

저는 모델을 반복하면서 데이터를 반복합니다. 액션/ID를 생성하는 각 항목에 버튼을 추가하고 싶습니다. MVC + T4MVC - URL 작업을 양식에 전달하는 방법은 무엇입니까? 또는 action/id를 생성하는 다른 방법은 무엇입니까?

내가 버튼에 URL을 추가 할 수 없기 때문에

는, 나는 다음과 양식을 사용하기로 결정했습니다 : 나는 삽입 된 글꼴 멋진 아이콘에 대신 입력 타입의 버튼을 선택했다

<form action="@Url.Action("ItemDetail", new { itemId = @quote.Item.ItemID})"> 
    <button class="btn-bg btn-sm btn-inverse btn-fix-width" type="submit"> 
     <i class="fa fa-th-list fa-fw pull-right"></i>View RFQ 
    </button> 
</form> 

.

그러나 /견적/상품 상세 정보가 있습니까?반대로/견적/ItemDetail 해당 itemId = 내가 T4MVC

을 사용하고 123

컨트롤러 :

public virtual ActionResult ItemDetail(int ItemID) 
{ 
    return View(); 
} 

RouteConfig : T4MVC와

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
+2

@ Url.Action ("ACTION", "CONTROLLER", 새 {itemId = @ quote.Item.ItemID}) 또는 @Url을 사용해보십시오.액션 ("ACTION", "컨트롤러", null, 새로운 {itemId = @ quote.Item.ItemID}) – Zaphod

+0

여기에 컨트롤러 코드를 입력 할 수 있습니까? – renefc3

+0

@Zaphod 언급을 잊어 버렸습니다. T4MVC – DarkShadowAY

답변

4

, 같은 이게 작동해야합니다 :

<form action="@Url.Action(MVC.Quote.ItemDetail(quote.Item.ItemID))"> 

... ItemDetail 동작이 QuoteController에 있다고 가정합니다. 컨트롤러 이름이 다른 경우 Quote을 컨트롤러 이름과 동일하게 변경하십시오. 여전히의 MVC의 출력을 사용하는 경우에도, 적어도 여기 T4MVC이 마법 문자열를 제거한다 ...

<form action="@Url.Action(MVC.Quote.ActionNames.ItemDetail, MVC.Quote.Name, 
    new { itemId = @quote.Item.ItemID})"> 

:

또한 @ 자 포드의 의견에 더 가서 이런 일을 할 수 상자 Url.Action 과부하.

또한 camelCase하지 PascalCase를 사용하여 액션 메소드 인수 이름을 지정해야 :

public virtual ActionResult ItemDetail(int itemId) // instead of ItemID 
{ 
    return View(); 
} 

을 ... 나는 그 문제를 야기한다고 생각하지 않습니다하지만.

업데이트

어쩌면이 시도?

<form method="GET" action="@Url.Action(MVC.Quote.ItemDetail(quote.Item.ItemID))"> 

나이 :

<form method="GET" action="@Url.Action(MVC.Quote.ActionNames.ItemDetail, MVC.Quote.Name)"> 
    <input type="hidden" name="itemId" value="@quote.Item.ItemID" /> 
    <button class="btn-bg btn-sm btn-inverse btn-fix-width" type="submit"> 
     <i class="fa fa-th-list fa-fw pull-right"></i>View RFQ 
    </button> 
</form> 

또 다른 갱신 :

하는 당신은 또한 버튼과 같은 당신의 연결 보이게하기 위해 대신이 작업을 수행 한 다음 CSS를 사용할 수 있어야합니다 :

<a href="@Url.Action(MVC.Quote.ItemDetail(quote.Item.ItemID))"> 
    <i class="fa fa-th-list fa-fw pull-right"></i>View RFQ 
</a> 

이 부분은 실제 내용입니다. 이어야합니다. 하나의 매개 변수 만 전송하기 때문입니다.

+0

그래도 여전히 같은 결과를 얻고 있지만 고마워. – DarkShadowAY

+0

편집 : 크롬 개발자 도구를 확인할 때 제대로 작동합니다! 그러나 버튼을 클릭하면 다음과 같이 나타납니다. Quote/ItemDetail? URL 바에서 – DarkShadowAY

+0

@DarkShadowAY - MVC가 올바른 href 속성을 렌더링하고 있지만 이것을 클릭하면 querystring 매개 변수가 URL에서 제거되고 있습니까? 나는 당신이 "크롬 개발자 도구에서 작동하는"것이 무슨 뜻인지 잘 모르겠습니다. 이 경우 피들러에서 요청이 진행되고 있는지 확인하십시오 (어쩌면 MVC가 어떤 이유로 리다이렉트 중일 수 있습니다). – danludwig