MVC에서 VB.Net을 사용하려는 분들에게 제가기도하는 것입니다. C#에서 사용할 수있는 구문을 사용할 수 없습니다. 원래 질문에 대한 대답까지는 질문의 즉각적인 불길을 일으킨 것 같습니다.
내 문제를 분석 한 후, 무엇보다 먼저, 르 (le). 내가 무엇을하려고했는지 명확히 한 다음 내가 한 일을 설명한다. 목표는 객체를 갖는 것이 었습니다 (제 경우에는 식당). 그리고 그 객체 (레스토랑)에 지정할 수있는 세부 정보보기에 표시되는 속성 (내 경우에는 요리) 목록을 갖고 싶었습니다. 이 속성은 내가 CuisineId, CuisineId, RestaurantIu, CuisineId라는 다른 테이블에 레코드를 쓰는 레스토랑 (CuisineId, 이름, 설명)에 설치 한 요리였습니다. 그래서, 요리의 목록을 얻는 것이 첫번째 작업이었고 그것들을 드롭 다운 목록에 표시하게했습니다. 즉,이 세부에서 요리의 selectList의를 작성하여 수행 된 CuisineRepository를 생성하고 모든 요리의 목록을 가져 오는 함수를 호출하여 기능을 볼 : 당신이 selectList의 등이 설정을 일단
Dim cuiss As New CuisineRepository()
ViewData("Cuisines") = New SelectList(cuiss.FindAllCuisines().ToList(), "CuisineId", "Name")
, 그것은 간단하게 표시 할 수 다음을 수행하여보기 :
<h3>Cuisines:</h3>
<br />
<%= Html.DropDownList("Cuisines")%>
그래서이 문제는 실제 문제였습니다. DropDownList의 값에 바인딩되는 ActionLink를 원했습니다. 나는이 시도에서 실패했다. 그러나 다행히, 내 jQuery를 먼지가없는 그래서 나는 다음을 수행하여 약간의 마법을 수행 : 그래서
<script type="text/Javascript">
$(document).ready(function() {
$('#Cuisines').change(function (e) {
$('#SelectedCuisine').val($('#Cuisines').val());
setHref($(this).val());
});
setHref($('#Cuisines').val());
});
function setHref(val) {
if (val) {
$("#addCuisine").attr('href', '/Restaurant/AddCuisine/' + $('#RestaurantId').val() + '?cuisineId=' + val);
}
}
</script>
<h3>Cuisines:</h3>
<br />
<%= Html.DropDownList("Cuisines")%>
<a id="addCuisine" href="">Add</a>
, 당신이 볼 수있는 사용자가 선택한 요리를 변경, 나는 단순히 앵커의 HREF을 수정합니다.그런 다음, 내 컨트롤러, I는 기능 설정이 요리를 추가하고 레스토랑에서 요리를 제거해야합니다 :
Function AddCuisine(ByVal id As Guid, ByVal cuisineId As String) As ActionResult
Try
If ModelState.IsValid Then
'Dim selcuisInp As HtmlInputHidden = ViewData("SelectedCuisine")
Dim selectedCuisineId As Guid = New Guid(cuisineId)
Dim rc As New RestaurantCuisine
rc.RestaurantCuisineId = Guid.NewGuid
rc.RestaurantId = id
rc.CuisineId = selectedCuisineId
'rc.CuisineId = New Guid(selList.SelectedValue.ToString)
rc.CreatedDate = DateTime.Now()
'rc.CreatedBy =
db.AddToRestaurantCuisines(rc)
db.SaveChanges()
End If
Return RedirectToAction("Details", New With {.id = id})
Catch e As Exception
Dim innerE As String = e.InnerException.ToString
Return RedirectToAction("Details", New With {.id = id})
End Try
End Function
Function DeleteRestaurantCuisine(ByVal id As Guid) As ActionResult
Dim rc = (From rcs In db.RestaurantCuisines
Where rcs.RestaurantCuisineId = id
Select rcs).Single()
Dim rid As Guid = rc.RestaurantId
Try
db.RestaurantCuisines.DeleteObject(rc)
db.SaveChanges()
Return RedirectToAction("Details", New With {.id = rid})
Catch ex As Exception
Return RedirectToAction("Details", New With {.id = rid})
End Try
End Function
을 주목 RedirectToAction을. 자세히보기가 필요하고 어디에서나 구문을 찾을 수없는 객체 (레스토랑)의 ID를 전달해야했습니다. 마지막으로, 잠시 동안 검색을 한 후에이 사람이 컨트롤러에 대한 몇 가지 예를 가지고 있고 운좋게도 C#과 VB의 예제를 제공한다는 사실을 알게되었습니다. RedirectToAction에 routeValues를 추가하려면 새리스트를 선언하고와 인라인을 사용하고 이전 기간으로 값을 추가 (.) :
Return RedirectToAction("Details", New With {.id = rid})
나는이 사람을 도움이되기를 바랍니다. MVC 사용에 대한 결정이 확실히 달라졌습니다. 나가 길가에 많은 방책으로 달릴 것이라는 점을 나가 알고 있더라도 나는 100 % 판매된다.
당신은 용감한 사람입니다. – rboarman