MVC3 Razor中的唯一随机字符串

时间:2013-06-05 09:51:50

标签: c# asp.net-mvc razor

我想在MVC3-Razor-C#.net中生成一个随机的3位数字符串。但条件是,在生成随机字符串之前,我需要检查数据库,即SQL 2008是否已存在此记录。如果随机生成的字符串已经存在于数据库中,我需要生成新的字符串。此功能适用于名为“NextAvailable”的按钮。我能够使用JavaScript生成随机字符串,但如果数据库已经存在则无法检入数据库。如果有任何帮助我的话会很棒。

Here is my Javascript function which is working fine, but how to check database using AJAX for existence of a string.

 function btnNextAvailable_OnClick() {
  $("#nextAvailableButtonClick.val('true')");
  var chars = "0123456789";
  var stringLength = 3;
  var randomstring = '';
  for (var i = 0; i < stringLength; i++) {
  var rnum = Math.floor(Math.random() * chars.length);
  randomstring += chars.substring(rnum, rnum + 1);
  }
  document.getElementById("SequentialId").value = randomstring
  }

1 个答案:

答案 0 :(得分:2)

你可以像这样实现它:

MVC:

public class RandomNumberController : Controller 
                 // Or take a look at ApiController
{
    public ActionResult GetRandomNumber()
    {
        string number = new RandomNumberGenerator().GetNextFreeRandomNumber();
        return Json(new { number = number}, JsonRequestBehavior.AllowGet);
    }
}

数据库逻辑:

public class RandomNumberGenerator
{
    public string GetNextFreeRandomNumber()
    {
        // do database calls, return next free random number            
        return "042";
    }
}

现在,从您的网页上,您可以执行以下操作:

$.get('/RandomNumber/GetRandomNumber', function(data) {
    alert(data.number);
});

您只是不希望您的客户端在服务返回有效号码之前继续锤击服务,因此您在服务器上执行号码生成。

现在,如果您在实施特定部分时遇到问题,请随时更新您的问题。