У меня есть представление, у которого есть Http.Action, чтобы получить частичный вид.Открытый метод действия «FetchClaimsFor? Pn = 11111 & cm = 12 & cy = 2016» не найден на контроллере «MyAPP.Controllers.ClaimMonthController»
Мой взгляд имеет следующее:
@Code
ViewData("Title") = "View Claims"
Dim actionUrl As String = "FetchClaimsFor?pn=" & ViewData("PersonnelNo") & "&cm=" & ViewData("ClaimMonth") & "&cy=" & ViewData("ClaimYear")
End Code
<div class="col-sm-12 col-md-6 col-lg-6">
@Html.Action(actionUrl, "ClaimMonth")
</div>
Мой ClaimMonthController имеет следующее:
<HttpGet>
<ChildActionOnly>
Function FetchClaimsFor() As PartialViewResult
Dim pn As String = Request.QueryString("pn")
Dim cm As Integer = Request.QueryString("cm")
Dim cy As Integer = Request.QueryString("cy")
Dim ClaimsMade = New OvertimeClaims
ClaimsMade.GetClaimsFor(pn, cm, cy)
Select Case tsbClaimsMade.CoreDays
Case 0
Return PartialView("_TSB0", OvertimeClaims)
Case 5
Return PartialView("_TSB5", tsbClaimsMade)
Case 6
Return PartialView("_TSB6", tsbClaimsMade)
Case 8
Return PartialView("_TSB8", tsbClaimsMade)
Case Else
Return PartialView("_TSB0", tsbClaimsMade)
End Select
End Function
Я сделал этот подход как PartialView может быть один из 4-х типов на основе значения, возвращаемого в Свойство ClaimsMade.
К сожалению, я получаю ошибку ...
Способ общественного действия 'FetchClaimsFor? Р = 11111 & см = 12 & су = 2016' не был найден на контроллере «MyAPP.Controllers. ClaimMonthController.
Глядя на другой аналогичный вопрос в SO Я попытался с и без <HttpGet>
и с и без <ChildActionOnly>
- каждый раз, когда я получаю ту же ошибку.
UPDATE забыл упомянуть, я также пытался добавить Public
функции
РЕШЕНИЕ
Посмотреть код должен быть:
@Html.Action("FetchClaimsFor", "ClaimMonth", New With { .pn = ViewData("PersonnelNo"), .cm = ViewData("ClaimMonth"), .cy = ViewData("ClaimYear") })
код контроллера должен быть:
Function FetchClaimsFor(pn As String, cm As Integer, cy As Integer) As PartialViewResult
REMOVE the next three lines.
Dim pn As String = Request.QueryString("pn")
Dim cm As Integer = Request.QueryString("cm")
Dim cy As Integer = Request.QueryString("cy")
Крис, спасибо ... это имеет смысл, и я использовал аналогичный с единственным идентификатором параметра, но у этого есть три параметра ... В настоящее время с вашим предложением я все равно получаю ту же ошибку. Какие изменения в коде контроллера мне нужно сделать? Поскольку использование Request.QueryString («pn») теперь ничего не даст (я думаю ... не получилось так далеко). – Mych
Сортировка .... опубликовала все связанные изменения в моем вопросе .... Спасибо за вашу помощь. – Mych
FWIW, вы должны принять параметры строки запроса как параметры действия, а не пытаться вытащить их из 'Request.QueryString'. –