C# MVC 4中验证失败后的下拉列表和单选按钮选择状态

C# MVC 4中验证失败后的下拉列表和单选按钮选择状态,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我正在以单一形式使用Dropdownlist、Radiobutton、Textbox和单选按钮。我使用了RequiredIF验证器。当我提交时,验证器工作,但dropdowmlist和单选按钮状态将更改。我需要在提交后不更改所选值。如何做到这一点 我的密码是 视图: 型号: publicobservableCollection接收列表{get;set;} DataAccessLayer objDAL=新DataAccessLayer(); [显示格式(ConvertEmptyStringToFu

我正在以单一形式使用
Dropdownlist、Radiobutton、Textbox
单选按钮
。我使用了
RequiredIF
验证器。当我提交时,验证器工作,但dropdowmlist和单选按钮状态将更改。我需要在提交后不更改所选值。如何做到这一点

我的密码是

视图:

型号:

publicobservableCollection接收列表{get;set;}
DataAccessLayer objDAL=新DataAccessLayer();
[显示格式(ConvertEmptyStringToFull=false)]
公共Int32 Id{get;set;}
[必需(ErrorMessage=“请选择名称”)]
公共Int32客户Id{get;set;}
公共字符串名称{get;set;}
公共字符串Cust_Name{get;set;}
公共字符串日期{get;set;}
[必需(ErrorMessage=“*”)]
[StringLength(超过10个,ErrorMessage=“最多{1}个字符”)]
[正则表达式(@“[0-9]*\.?[0-9]+”,ErrorMessage=“{0}必须是一个数字。”)]
公共字符串Pay_Amount{get;set;}
[StringLength(超过10个,ErrorMessage=“最多{1}个字符”)]
公共字符串Credit{get;set;}
[StringLength(超过10个,ErrorMessage=“最多{1}个字符”)]
公共字符串支付模式{get;set;}
公共布尔支付模式1{get;set;}
需要公共场所
{
得到
{
返回支付模式1;
}
}
[RequiredIf(“IscheQueryRequired”,true,ErrorMessage=“您必须输入银行名称!”)
[StringLength(超过10个,ErrorMessage=“最多{1}个字符”)]
公共字符串Bank_Name{get;set;}
[RequiredIf(“IscheQueryRequired”,true,ErrorMessage=“您必须输入银行地址!”)
//[RequiredIf(“IscheQueryRequired”,true,ErrorMessage=“您必须解释任何\“是\”答案!”)
[StringLength(超过20个,ErrorMessage=“最多{1}个字符”)]
公共字符串Bank_地址{get;set;}
//[必需(ErrorMessage=“*”)]
[RequiredIf(“IsChequeRequired”,true,ErrorMessage=“您必须输入ChequeNo!”)
[StringLength(超过20个,ErrorMessage=“最多{1}个字符”)]
公共字符串ChequeNo{get;set;}
//[必需(ErrorMessage=“*”)]
[RequiredIf(“IscheQueryRequired”,true,ErrorMessage=“您必须输入支票日期!”)
[StringLength(超过10个,ErrorMessage=“最多{1}个字符”)]
公共字符串支票\日期{get;set;}
//[RequiredIf(“IscheQueryRequired”,true,ErrorMessage=“您必须输入支票日期!”)
//[StringLength(超过20个,ErrorMessage=“最多{1}个字符”)]
公共字符串{get;set;}
公共选择列表Ddl{get;set;}
公共列表SelectedValue{get;set;}
DataTable dt=新的DataTable();

我是通过使用
Viewdata()
Script
以及视图上的一些修改来完成的……我修改的代码是

控制器:

[HttpPost]
        public ActionResult ReceiptMaster(Receipt model, string command)
        {
            Receipt Receipt = new Models.Receipt();

            if (command == "Sumbit")
            {
                int Id = 0;
                if (model.Pay_Mode == "C")
                {
                    model.ChequeNo = "";
                    model.Cheque_Date = ("1/1/1753 12:00:00 AM");
                    model.Bank_Name = "";
                    model.Bank_Address = "";
                }

                if (ModelState.IsValid)
                {
                    Id = Receipt.SaveReceipt(model.Id, model.Cust_Id, model.Pay_Amount, model.Pay_Mode, model.Bank_Name, model.Bank_Address, model.ChequeNo, model.Cheque_Date);
                    if (Id > 0)
                    {
                        ViewData["Success"] = "Product was saved successfully.";
                        ViewData["ControlView"] = 1;
                        //ObservableCollection<Receipt> ReceiptList = new ObservableCollection<Receipt>();
                        model.ReceiptList = Receipt.GetReceiptList();// model.ReceiptList is your model property
                        return View(model.ReceiptList);

                    }
                   // ObservableCollection<Receipt> ReceiptList = new ObservableCollection<Receipt>();
                    model.ReceiptList = Receipt.GetReceiptList();// model.ReceiptList is your model property
                    return View(model.ReceiptList);
                }
                model.ReceiptList = Receipt.GetReceiptList();// model.ReceiptList is your model property
                return View(model.ReceiptList);
                //ObservableCollection<Receipt> ReceiptList = new ObservableCollection<Receipt>();
                //ReceiptList = Receipt.GetReceiptList();
                //return View(ReceiptList);
            }

            //ObservableCollection<Receipt> ReceiptList = new ObservableCollection<Receipt>();
            model.ReceiptList = Receipt.GetReceiptList();// model.ReceiptList is your model property
            return View(model.ReceiptList);

        }
ViewData["PAYMODE"] = model.Pay_Mode;
ViewData["Credit"] = model.Credited;
ViewData["CustName"] = model.Cust_Name; 
视图中的

脚本

<script type="text/javascript">
    $(document).ready(function () {
        var val = ('@ViewData["PAYMODE"]');
        var Credit = ('@ViewData["Credit"]');
        if (val == "C") {

            document.getElementById("Cash").checked = true;
            chMd();
        } else {

            document.getElementById("Cheque").checked = true;
            chMd();

        }
        if (Credit == "N") {
            document.getElementById("CreditNo").checked = true;
            chMd1();
        }
        else {
            document.getElementById("CreditYes").checked = true;
            chMd1();
        }
    });

</script>

为什么不使用html助手呢?html.dropdownlistfor和html.radiobuttonfor。这些应该为您保留该值。我尝试使用该值,但我需要根据单选按钮的更改执行一些其他功能。我如何执行这些功能先生]您还需要执行哪些其他功能?这里有一个链接,讨论了如何确定选择了哪个单选按钮,以及您可以对单击事件使用相同的选择器
ViewData["PAYMODE"] = model.Pay_Mode;
ViewData["Credit"] = model.Credited;
ViewData["CustName"] = model.Cust_Name; 
<script type="text/javascript">
    $(document).ready(function () {
        var val = ('@ViewData["PAYMODE"]');
        var Credit = ('@ViewData["Credit"]');
        if (val == "C") {

            document.getElementById("Cash").checked = true;
            chMd();
        } else {

            document.getElementById("Cheque").checked = true;
            chMd();

        }
        if (Credit == "N") {
            document.getElementById("CreditNo").checked = true;
            chMd1();
        }
        else {
            document.getElementById("CreditYes").checked = true;
            chMd1();
        }
    });

</script>
<input name="dOption1" id="CreditYes" value="Y" onclick="chMd1()" type="radio" />Yes
 <input name="dOption1" id="CreditNo" value="N" onclick="chMd1()" type="radio"  checked="checked"/>No
 <input name="Credited" type="text" style="visibility: hidden; width: 1px;" value="n" />