How can I pass a value entered in a texbox to a PartialViewResult?

人走茶凉 提交于 2019-12-04 06:41:03

问题


I am creating an MVC app where the user can add items to their cart. They can also make partial payments on certain items so I have a TextBox for them to specify how much they want to pay. I am using an Ajax ActionLink to handle the Update/Add to cart actions so that I can increment the cart count without refreshing the screen using a partial view. My issue is that I can't find a way to pass in or access the value entered in the TextBox to my PartialViewResult function.

Here is my Model...

Public Class StudentSchoolFee_Transaction

    Public Property SchoolFeeId As Integer
    Public Property Title As String
    Public Property Price As Decimal
    Public Property AmountDue As Decimal
    <DisplayFormat(ApplyFormatInEditMode:=True, DataFormatString:="{0:C2}")>
    Public Property Amount As Decimal
    Public Property Description As String
    Public Property AcceptPartialPayment As Boolean
    Public Property StudentId As Integer

    Public Property TransactionId As Integer

End Class

Public Class AssignedFeesModel

    Public Property StudentId As Integer
    Public Property StudentNumber As Long
    Public Property SiteId As String

    Public Property SelectedSchoolFeeId As Integer
    Public Property SelectedAcceptPartial As Boolean
    Public Property SelectedAmountDue As Decimal
    Public Property SelectedAmount As Decimal
    Public Property SelectedTransactionId As Integer

    Public Property AssignedFeesCol As System.Collections.Generic.List(Of   StudentSchoolFee_Transaction)

    Public Sub New()

    End Sub

    Public Sub New(ByVal _Deliver As EMS.Grid.Deliver, ByVal _StudentId As String)

        Dim SelectedStudent As New Library.Student(_Deliver, _StudentId)

        AssignedFeesCol = New System.Collections.Generic.List(Of StudentSchoolFee_Transaction)

        StudentId = SelectedStudent.Id
        StudentNumber = SelectedStudent.StudentNumber
        SiteId = SelectedStudent.SiteId

        'Load AssignedFeesCol   
    End Sub
End Class

Here are my initial load ActionResult and my AddAssignedFee PartialViewResult to refresh the cart count...

    Function AssignedFees(ByVal StudentId As String, Optional ByVal ErrorMessage As String = "") As ActionResult
        Dim oDeliver As New EMS.Grid.Deliver
        oDeliver.UDLNameOrConnString = ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString

        Dim m As New AssignedFeesModel(oDeliver, StudentId)

        Dim stu As New Library.MealHistoryDB.Student(oDeliver, m.StudentNumber, UserSession.GetSession.DistrictId)

        Return View(m)
    End Function

    Public Function AddAssignedFee(ByVal StudentId As Integer, ByVal SchoolFeeId As Integer, ByVal SelectedAmount As Decimal) As PartialViewResult

        Dim oDeliver As New EMS.Grid.Deliver
        oDeliver.UDLNameOrConnString = ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString

        With New Library.Ecommerce.SchoolFee(oDeliver, SchoolFeeId)
            .AddToCart(oDeliver, UserSession.GetSession.ParentId, StudentId, SelectedAmount)
        End With

        Return PartialView("_CartButton") ', New Global.MSM.mobile.CartButton())

    End Function

And here are my Ajax action links, the first is for Adding an item with no Amount specified and it works. The second is for Updating an item that can have an partial payment Amount and I can't find a way to pass the amount to the PartialViewResult.

@Ajax.ActionLink("Add", "AddAssignedFee", "Parent", New With {.StudentId = currentItem.StudentId, .SchoolFeeId = currentItem.SchoolFeeId, .SelectedAmount = currentItem.Amount}, New AjaxOptions() With {.HttpMethod = "POST", .InsertionMode = InsertionMode.Replace, .UpdateTargetId = "btnCartContainer"}, New With {.class = "button"})


@Ajax.ActionLink("Update", "AddAssignedFee", "Parent", New With {.StudentId = currentItem.StudentId, .SchoolFeeId = currentItem.SchoolFeeId, .SelectedAmount = currentItem.Amount}, New AjaxOptions() With {.HttpMethod = "POST", .InsertionMode = InsertionMode.Replace, .UpdateTargetId = "btnCartContainer"}, New With {.class = "button"})

I have also tried ".SelectedAmount = Model.SelectedAmount" for the Update link but I can't seem to find a way to pass the entered Amount to the PartialViewResult.

Any suggestions?

Thank you! Lindsay


回答1:


you might try doing an ajax call

$('.Link').on('click', function(){
    $.ajax({
        url: "@(Url.Action("AddAssignedFee", "Controller")",
        type: "POST",
        data: { textValue: $('.PaymentAmount').val(), data2: 'data2' }
        cache: false,
        async: true,
        success: function (result) {
            $(".Content").html(result);
        }
    });
});

Hopefully this helps



来源:https://stackoverflow.com/questions/19126058/how-can-i-pass-a-value-entered-in-a-texbox-to-a-partialviewresult

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!