在一个按钮中同时调用c#和javascript asp.net mvc

时间:2018-07-11 02:57:47

标签: c# jquery asp.net ajax model-view-controller

我在ASP.NET MVC视图中有一个按钮。我发现我们可以在视图中添加@ {},从而在视图中实际使用c#命令。所以我想知道,我的按钮如何同时调用javascript函数并将数据添加到在该视图中随模型传递的列表中。 这是我的模特

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Net.Mail;
using System.Web.Mvc;

namespace Dutch_Lady_Mailling_App.Models
{
    public class SendMailModel
    {
        [DataType(DataType.EmailAddress), Display(Name = "To")]
        [Required(AllowEmptyStrings = false)]
        public string ToEmail { get; set; }
        [Display(Name = "Body")]
        [DataType(DataType.MultilineText)]

        public string EMailBody { get; set; }
        [Display(Name = "Subject")]
        public string EmailSubject { get; set; }

        [Display(Name = "CC")]
        public string EmailCC { get; set; }
        [Display(Name = "BCC")]
        public string EmailBCC { get; set; }

        public string time { get; set; }
        public string resourceFile{get;set;}
        public string Data { get; set; }
        public bool sendtemplate { get; set; }
        public bool senddis { get; set; }
        public List<Contact> contacts { get; set; }
        public List<Distributor> distributors { get; set; }
        public string SelectedDis { get; set; }

        public string SelectedTemplate { get; set; }
        public IEnumerable<SelectListItem> Templates { get; set; }

    }

}

在我看来,单击按钮会将选定的联系人添加到列表中,还可以通过调用jquery函数而不将页面重新加载选定的元素到另一个div,这就是我想要的

1 个答案:

答案 0 :(得分:1)

据我了解,您想执行两个操作,一个是服务器端,另一个是客户端。当然,如果调用服务器端方法,则会发回邮件,并且所有页面都会重新发送给您,因此您可以使用服务器端方法来完成所有工作,因为该页面将再次创建-我的意思是不需要javascript函数。但是,可以避免这种情况的一种方法以及针对您的情况的最佳方法是使用Ajax更新列表。最简单的方法是使用诸如$.ajax或其简化版本$.post$.get之类的jquery ajax方法(取决于您的方案和要将信息发送到服务器的方式)。例如:

$('#your_button_id').click(function(){
    $.post( "manage_contacts_api_url", "selected_contacts_ids", function( data ) {
        // update your div here
    });
});