如何在视图和控制器MVC之间切换?

时间:2018-01-19 07:39:05

标签: c# asp.net-mvc

我是asp.net mvc的新手。我想执行以下场景。

我有一个表单来计算简单的兴趣。填写表格后我想在该表格下方显示简单的利息值。我已将输入的值传递给控制器​​并计算出简单的利息值。问题是如何显示用户单击“计算”后,该值低于该表单。

我的表单结构如下:

  • 计算

点击计算后,我想在该表格下面显示简单的兴趣值。

我的代码如下:

控制器

    public ActionResult SimpleInterest()
    {
        SimpleInterestModel model = new SimpleInterestModel();
        return View(model);
    }

    [HttpPost]
    public ActionResult CalculateSimpleInterestResult(SimpleInterestModel model)
    {
        decimal simpleInteresrt = (model.Amount * model.Year * model.Rate) / 100;
        StringBuilder sbInterest = new StringBuilder();
        sbInterest.Append("<b>Amount :</b> " + model.Amount + "<br/>");
        sbInterest.Append("<b>Rate :</b> " + model.Rate + "<br/>");
        sbInterest.Append("<b>Time(year) :</b> " + model.Year + "<br/>");
        sbInterest.Append("<b>Interest :</b> " + simpleInteresrt);
        return Content(sbInterest.ToString());
    }

查看

     <div class="container" style="width:30%">
    <h2>Calulate Simple Interest</h2>
    @using (@Html.BeginForm("CalculateSimpleInterestResult", "Test", FormMethod.Post))
    {

        @Html.TextBoxFor(m => m.Amount, new { @class = "form-control", @placeholder = "Amount" })
        @Html.TextBoxFor(m => m.Rate, new { @class = "form-control", @placeholder = "Rate" })
        @Html.TextBoxFor(m => m.Year, new { @class = "form-control", @placeholder = "Year" })


        <input type="submit" value="Calculate" class="btn-block" />

    }
    </div>

模型

public class SimpleInterestModel
{
    public decimal Amount { get; set; }
    public decimal Rate { get; set; }
    public int Year { get; set; }
}

2 个答案:

答案 0 :(得分:1)

您可以使用按钮点击事件上的jquery计算简单兴趣,并在同一视图中显示结果。

&#13;
&#13;
function calculateSimpleInterest() {
	var loSimpleInterest = parseFloat(parseFloat($('#Amount').val())*parseFloat($('#Year').val())*parseFloat($('#Rate').val()))/100;
	$('#Result').text('Simple Interest: ' + loSimpleInterest)
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
Amount: <input type="text" id="Amount"><br/><br/>
Rate: <input type="text" id="Rate"><br/><br/>
Year: <input type="text" id="Year"><br/><br/>

<input type="submit" value="Calculate" id="Calculate" onclick="calculateSimpleInterest();" />
<br/><br/>
<label id="Result"></label>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

有几种可能性。 一种方法是使用类似byte[]的方法扩展模型,并将模型返回到另一个显示模型数据的视图。

或者您可以将public int SimpleInteresrt {get;set;}值传递到Viewbag中,然后通过剃刀查看它。你只需要在Razor-Code的形式下检查Viewbag是否为null,如果没有,则显示该值。

在你看来这样的事情:

simpleInteresrt

在您的控制器中,您可以在计算之后添加类似

的内容
@{
   int? simple = Viewbag.Simple;
   if( simple.HasValue )
   {
     @: Your Value is: @simple.Value
   }
  }

另一种方法是使用异步JavaScript调用(AJAX)。将数据发布到Controller并通过JavaScript接收JSON-Answer的位置,用于操作DOM。