首页 > 解决方案 > 将整数转换为罗马数字的控制器方法

问题描述

需要控制器中的方法的帮助,该方法将通过表单获取整数,然后将整数转换为罗马数字并将其发布回网页。

到目前为止,这是我的控制器。

public ActionResult Index()
{
    
    return View();
}

[HttpPost]
public ActionResult Index(FormCollection form)
{


    return View();
}

<h2>Numeral Converter</h2>
<fieldset>
    <legend>Convert numbers to roman numerals</legend>
    @using (Ajax.BeginForm("Index", "ConvertController",
                            new AjaxOptions { UpdateTargetId = "divInterestDeatils" }))
    {
        <div id="divInterestDeatils"></div>
        <ol>
            <li>
                @Html.Label("Enter Number to Convert")
                @Html.TextBox("myTextBox")
            </li>
          
        </ol>
        <button>Convert</button>
    }
</fieldset>

标签: c#asp.net-mvc

解决方案


这是一个工作代码示例:)
正如您在方法上看到的,OnConvertClicked我将输入转换为数字并将其传递给我在下面创建的方法。此方法将返回罗马数字。在这行代码之后,你可以用它做任何你想做的事情,例如在文本框或标签中显示它

public void OnConvertClicked(object sender, EventArgs e)
    {
        //Button clicked
        try
        {
            int number = Convert.ToInt32(myTextBox.Text); //convert to number
            string romanNumber = ToRomanNumber(number); //Get roman number
        }
        catch (Exception ex)
        {
            //The user input was not a number...
            myTextBox.Text = "Error"; 
        }
    }
    
    public string ToRomanNumber(int num)
    {
        var listOfNum = new List<int>() {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        var listOfRoman = new List<string>(){"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};


        var numToRoman = "";
        for (int i = 0; i < listOfNum.Count; i++)
        {
            while (num >= listOfNum[i])
            {
                numToRoman += listOfRoman[i];
                num -= listOfNum[i];
            }
        }
        return numToRoman;
    }

推荐阅读