将C#转换为客户端Javascript

将C#转换为客户端Javascript,c#,asp.net,javascript,ajax,asp.net-ajax,C#,Asp.net,Javascript,Ajax,Asp.net Ajax,我有一个Asp.Net页面,在ListView控件中有一个带有复选框的选项列表。我已经使用分页控件应用了分页。但是,我希望在ListView的各个分页页面中保持复选框的状态。我用以下代码完成了这项工作 private List<int> IDs { get { if (this.ViewState["IDs"] == null) { this.ViewState["

我有一个Asp.Net页面,在ListView控件中有一个带有复选框的选项列表。我已经使用分页控件应用了分页。但是,我希望在ListView的各个分页页面中保持复选框的状态。我用以下代码完成了这项工作

private List<int> IDs
    {
        get
        {
            if (this.ViewState["IDs"] == null)
            {
                this.ViewState["IDs"] = new List<int>();
            }
            return (List<int>)this.ViewState["IDs"];
        }
    }

protected void AddRowstoIDList()
{
    int checkAction = 0;

    foreach (ListViewDataItem lvi in lvCharOrgs.Items)
    {
        CheckBox chkSelect = (CheckBox)lvi.FindControl("chkSelect");
        if ((((chkSelect) != null)))
        {
            int ID = Convert.ToInt32(lvCharOrgs.DataKeys[lvi.DisplayIndex].Value);


            if ((chkSelect.Checked && !this.IDs.Contains(ID)))
            {
                this.IDs.Add(ID);
                checkAction += 1;
            }
            else if ((!chkSelect.Checked && this.IDs.Contains(ID)))
            {
                this.IDs.Remove(ID);
            }
        }
    }
}

protected void lvCharOrgs_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    ListViewDataItem lvi = (ListViewDataItem)e.Item;
    if ((lvi.ItemType == ListViewItemType.DataItem))
    {
        // Find the checkbox in the current row
        CheckBox chkSelect = (CheckBox)lvi.FindControl("chkSelect");
        // Make sure we're referencing the correct control
        if ((chkSelect) != null)
        {
            // If the ID exists in our list then check the checkbox
            int ID = Convert.ToInt32(lvCharOrgs.DataKeys[lvi.DisplayIndex].Value);
            chkSelect.Checked = this.IDs.Contains(ID);
        }
    }

    if (Profile.proUserType == "basic")
    {//basic account so no choice of charity
        ((CheckBox)e.Item.FindControl("chkSelect")).Checked = true;
        ((CheckBox)e.Item.FindControl("chkSelect")).Enabled = false;
    }
}
私有列表ID
{
得到
{
if(this.ViewState[“IDs”]==null)
{
this.ViewState[“IDs”]=new List();
}
返回(列出)这个.ViewState[“id”];
}
}
受保护的void AddRowstoIDList()
{
int checkAction=0;
foreach(lvCharOrgs.Items中的ListViewDataItem lvi)
{
复选框chkSelect=(复选框)lvi.FindControl(“chkSelect”);
如果((((chkSelect)!=null)))
{
int ID=Convert.ToInt32(lvCharOrgs.DataKeys[lvi.DisplayIndex].Value);
如果((chkSelect.Checked&&!this.IDs.Contains(ID)))
{
this.IDs.Add(ID);
检查动作+=1;
}
如果(!chkSelect.Checked&&this.IDs.Contains(ID)),则为else
{
此.ID.Remove(ID);
}
}
}
}
受保护的void lvCharOrgs_ItemDataBound(对象发送方,ListViewItemEventArgs e)
{
ListViewDataItem lvi=(ListViewDataItem)e.Item;
if((lvi.ItemType==ListViewItemType.DataItem))
{
//在当前行中找到复选框
复选框chkSelect=(复选框)lvi.FindControl(“chkSelect”);
//确保我们引用了正确的控件
如果((chkSelect)!=null)
{
//如果该ID存在于我们的列表中,则选中复选框
int ID=Convert.ToInt32(lvCharOrgs.DataKeys[lvi.DisplayIndex].Value);
chkSelect.Checked=this.IDs.Contains(ID);
}
}
如果(Profile.proUserType==“基本”)
{//基本账户,因此没有慈善选择
((复选框)e.Item.FindControl(“chkSelect”)。选中=真;
((复选框)e.Item.FindControl(“chkSelect”)。Enabled=false;
}
}
现在我有了一个CustomValidator控件,它检查以确保选择了3到5条记录。如果这是真的,则页面有效并已处理。如果不是这种情况(如少于3个或多于5个),则页面无效,CustomValidator会抛出一个标签来通知这一事实

我在服务器端使用以下代码来实现这一点

protected void lvCharOrgsValidator_ServerValidate(object source, ServerValidateEventArgs args)
{// Custom validate lvCharOrgs
   //update selected rows
    AddRowstoIDList();
    //get count and verify is correct range
    int counter = this.IDs.Count;
    args.IsValid = (counter >=3 && counter <=5) ? true : false;
}
protectedvoid lvCharOrgsValidator\u ServerValidate(对象源,ServerValidateEventArgs args)
{//自定义验证lvCharOrgs
//更新所选行
AddRowstoIDList();
//获取计数并验证其范围是否正确
int计数器=this.IDs.Count;

args.IsValid=(counter>=3&&counter看一看这篇文章。它适用于asp.net mvc,但也涵盖了一些基础知识,您可能可以对asp.net执行类似的操作。特别是,您可能会发现文章中显示的jquery远程验证属性对您打算执行的操作非常有用。

看一看这篇文章。它适用于asp.net mvc,但它也涵盖了一些基础知识,您可能可以为asp.net做类似的事情。特别是,您可能会发现文章中显示的jquery远程验证属性对您打算做的事情很有用。

好的,您可以始终将自己的javascript与自定义验证程序一起包含。是介绍添加ja的文章的链接vascript到验证器。你只需要编写自己的javascript,真的。

好吧,你可以在自定义验证器中包含自己的javascript。这是一篇介绍如何将javascript添加到验证器的文章的链接。你只需编写自己的javascript,真的。

如果你将
int
更改为
var
,你的code是有效的JavaScript。(但由于它也取决于需要转换的其他函数和对象。)此外,如果使用c#3.5编译器,即使使用var而不是int,它也将保持有效的c。

如果将
int
更改为
var
,则代码是有效的JavaScript。(但由于它取决于其他函数和对象,您也需要转换它们。)此外,如果您使用c#3.5编译器,即使使用var而不是int,它也将保持有效的c。

下面的操作是什么

AddRowstoIDList();
下面的内容只是一个开始,但需要更多关于上述方法的细节才能提供有效的答案

function validateRowCount(sender, args) {
    //update selected rows
    AddRowstoIDList(); // Does this add row indexes to an array?

    //get count and verify is correct range
    var counter = IDList.length;
    args.IsValid = (counter >=3 && counter <=5);
}
应该像这样工作-


如果要查看代码,请将/edit添加到URL中以下操作是什么

AddRowstoIDList();
下面的内容只是一个开始,但需要更多关于上述方法的细节才能提供有效的答案

function validateRowCount(sender, args) {
    //update selected rows
    AddRowstoIDList(); // Does this add row indexes to an array?

    //get count and verify is correct range
    var counter = IDList.length;
    args.IsValid = (counter >=3 && counter <=5);
}
应该像这样工作-


如果您想查看代码,请将/edit添加到URL中

可能不是您想要的,但有:

“Web 2.0炒作?想要构建更好的Web吗?” 网站,但javascript太难了?不 真正的IDE?也许你应该试试jsc。 该web应用程序可以在Visual Studio中构建 Studio 2008或任何其他符合c#标准的 IDE,然后是应用程序 神奇地出现了。你应该想想 将其作为智能客户端。预编译您的 将jsc!作为 选项,而不是使用IIS和 net,您可以使用 apache,使用mysql和php。”


可能不是你想要的,但有:

“Web 2.0炒作?想要构建更好的Web吗?” 网站,但javascript太难了?不 真正的IDE?也许你应该试试jsc。 该web应用程序可以在Visual Studio中构建 Studio 2008或任何其他符合c#标准的 IDE,然后是应用程序 神奇地出现了。你应该想想 将其作为智能客户端。预编译您的 将jsc!作为 选项,而不是使用IIS和 net,您可以使用 apache,使用mysql和php。”


我听说有一个从c#(或者是IL?)到JavaScript的交叉编译器,但不幸的是,我已经记不起这个名字了,但谷歌搜索发现了一些东西